Все технические форумы на одном сайте Удобный поиск информации с популярных форумов в одном месте
Вопрос: Центрирование текста и размер шрифта

Как сделать что бы в паскале в graphabc текст выводился по центру окна, и как изменить размер шрифта

Добавлено через 8 минут
и как сделать отступ между строками при выводе?
Ответ: erl27, подскажите пожалуйста, у меня аналогичная "проблема" как и у kirill1904. Мне необходимо вывести текст в graphabc из файла с отступом и выравниванием по ширине. Я не знаю как задать цвет текста и отступ с клавиатуры. Еще у меня не переносится текст.
вот что я сделал:
Код Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
program kkr;
uses graphabc;
var
  f:text;
  s:string;
  x,y:integer;
begin
    assign (f,'input.txt' );
    reset(f);
    while not eof(f) do
      begin
          SetFontSize(14);
          readln(f,s);
          x:= (WindowWidth - TextWidth(S)) div 2;
          y:= WindowHeight div 2;
          TextOut(x,y,s);
      end;
    close(f);
end.
Вопрос: Перенос строк и центрирование текста при наложении на изображение

Всем привет.

Работаю над кодом, который пишет текст на изображении.
PHP:

  1. <?PHP
  2. //image_size: 537x240px
  3. ('Content-type: image/jpeg');
  4. $jpg_image = ('111.jpg');
  5. $white = ($jpg_image, 255, 255, 255);
  6. $font_path = 'arial.ttf';
  7. $text = "Длинный текст, который не помещается в одну строку, нужно сделать переносы и центрировать его.";
  8. ($jpg_image, 16, 0, 11, 150, $white, $font_path, $text);
  9. ($jpg_image);
  10. ($jpg_image);
  11. ?>
Появилась проблема, которую никак не могу решить и прошу помощи у вас.
Как мне сделать перенос слов, из строки $text, чтобы он красиво размещался на изображении? Пробовал изменять по количеству символов, не получилось.
Значение строки $text будет меняться, от 1 до ~30 слов.
Размер шрифта меняться не должен.
Изображения всегда будут размером 537x240px.
Перенос нужно сделать не разделяя слова, то есть на местах пробелов.
Текст нужно каким-то образом центрировать по картинке. Как вертикально, так и горизонтально.
В идеале, если возможно, делать переносы равномерно. Например, чтобы не было такого, что в предложении из 7 слов, в верхней строке 6 слов, а в нижней 1. Должно быть хотя бы 4+3, 3+4, или 5+2. Возможно какие-то специальные символы для переноса придумать, аля <br>.

Готов подкинуть на пиво, тому кто поможет, пишите в ЛС или прям тут.
Ответ:
Строитель, всё работает превосходно.
Одна только проблема есть: вертикально этот бокс центрируется всегда на одном уровне, приблизительно по центру, но если строк будет 4 или 5, текст спозлает вниз, ниже картинки, хотя первая строка останется по центру..
Можно бокс как-то тоже вертикально центрировать в зависимости от его высоты?

Разобрался.
PHP:

  1. $y = ((($image) - ($box[1] - $box[6]))/2);


Спасибо ещё раз. Если что, пишите в ЛС

(Отредактировано автором: 05 Августа, 2017 - 05:34:57)

Вопрос: Центрирование текста GD

Привет .
Нужно отцентрировать текст на холсте .

Подскажите универсальную функцию для этого.
Код PHP
1
2
3
4
$image = ImageCreateTrueColor($width, $height);
$fontpath = 'font1.ttf';
ImageFTText($image, 10, 0, 20, 20, $text_color=$color, $fontpath,
$text='some text value');
Ответ: Благодарен ,идеально
Вопрос: Как поменять цвет текста консоли на любой цвет из RGB цветов

Цвет консоли можно поменять используя только 16 встроенных цветов или можно использовать комбинации RGB?
C#
1
Console.ForegroundColor = ConsoleColor./*16*/;
Ответ: Вроде бы только стандартные 16 цветов можно использовать. Ведь консолька в окнах - эмулятор MS-DOS (поправьте если я не прав)
Вопрос: Несколько окон консоли

Нужно, чтобы программа запускалась, и открывала 2 окна консоли, в одном выводила "Hello, world", а в другом "Hello, user". Как такое организовать?
Ответ: Вот накидал, для windows.
СЕРВЕР
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
#include <windows.h>
#include <string.h>
#include <stdio.h>
#define MAX_BUF     256
#define MAX_CONSOLE 2
static char*     ptr_to_str(DWORD_PTR p, char* s);
static DWORD_PTR str_to_ptr(const char* s, int* e);
 
struct pipe {
    HANDLE hin;
    HANDLE hout;
};
BOOL  pipe_connect(pipe* p, char* app);
void  pipe_close(pipe* p);
BOOL  pipe_write(const pipe* p, const char* s, DWORD n);
 
int main(void){
    static struct pipe pipes[MAX_CONSOLE];
    int    i, k;
    char   s[MAX_BUF];
    DWORD  n;
 
    //путь к клиенту
    char path[MAX_PATH] = "client.exe";
 
    //запуск консолей
    for(i = 0; i < MAX_CONSOLE; ++i){
        if(! pipe_connect(&pipes[i], path)){
            fprintf(stderr, "error pipes[%d], pipe_connect\n", i);
            return 1;
        }
    }
    puts("\t\t\t\1\1\1 RUN SERVER");
 
    //по переменке отправлять сообщение двум консолям
    k = 0;
    while(1){
        printf("enter msg: ");
        scanf("%255[^\n]", s);
        fflush(stdin);
 
        n = strlen(s) + 1;
        if(n > 1){
            //выход команда exit
            if(! strcmp(s, "exit")){
                for(i = 0; i < MAX_CONSOLE; ++i)
                    pipe_write(&pipes[i], s, n);
                break;
            }
 
            //отправка k-консоле сообщение
            if(! pipe_write(&pipes[k], s, n))
                printf("error console[%d], pipe_write\n", k);
        }
        k ^= 1;
    }
 
    for(i = 0; i < MAX_CONSOLE; ++i)
        pipe_close(&pipes[i]);
    return 0;
}
 
//установка связи с клиентом
BOOL pipe_connect(pipe* p, char* app){
    char path[MAX_PATH + 1], s[32];
    SECURITY_ATTRIBUTES attr;
    PROCESS_INFORMATION pi; 
    STARTUPINFOA        si;
 
    attr.nLength              = sizeof(attr);
    attr.bInheritHandle       = TRUE;
    attr.lpSecurityDescriptor = NULL;
    if(! CreatePipe(&p->hin, &p->hout, &attr, MAX_BUF + 1))
        return FALSE;
 
    sprintf(path, "%s %s", app, ptr_to_str((DWORD_PTR)p->hin, s));
    memset(&pi, 0, sizeof(pi));
    memset(&si, 0, sizeof(si));
    si.cb = sizeof(si);
 
    if(! CreateProcessA(NULL, path, NULL, NULL, TRUE, CREATE_NEW_CONSOLE, NULL, NULL, &si, &pi))
        return FALSE;
    CloseHandle(pi.hThread);
    CloseHandle(pi.hProcess);   
    return TRUE;
}
 
//запись
BOOL pipe_write(const pipe* p, const char* s, DWORD n){
    DWORD w = 0;
    BOOL  r = WriteFile(p->hout, s, n, &w, NULL);
    return (r && (w == n));
}
 
//закрытие
void pipe_close(pipe* p){
    if(p->hout != NULL)
        CloseHandle(p->hout);
    if(p->hin != NULL)
        CloseHandle(p->hin);
    p->hout = p->hin = NULL;
}
 
//преобразование целого числа в строку
static char* ptr_to_str(DWORD_PTR p, char* s){
    char  ds[32];
    int   j, i = 0;
    char*    t = s;
    do {
        ds[i++] = (char)(p % 10) + '0';
    } while((p /= 10) != 0);
 
    for(j = i - 1; j >= 0; --j)
        *s++ = ds[j];
    *s = '\0';
    return t;
}

КЛИЕНТ
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
#include <windows.h>
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#define MAX_BUF  256
static DWORD_PTR str_to_ptr(const char* s, int* e);
 
struct pipe {
    HANDLE hin;
    HANDLE hout;
};
BOOL  pipe_open(pipe* p, char* argv[], int argc);
DWORD pipe_read(const pipe* p, char* s, DWORD n);
 
int main(int argc, char* argv[]){
    struct pipe p;
    char   s[MAX_BUF];
    DWORD  n;
 
    if(! pipe_open(&p, argv, argc)){
        fputs("error, pipe_open\n", stderr);
        return 1;
    }
 
    //для прикола изменим цвет текста консоли
    SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_RED | FOREGROUND_GREEN);
    printf("\t\4 RUN CLIENT PID: %lu\n", GetCurrentProcessId());
 
    //получение сообщений от сервера
    while(1){
        n = pipe_read(&p, s, MAX_BUF - 1);
        if(n > 0){
            s[n] = '\0';
            //выход
            if(! strcmp(s, "exit"))
                break;
            //вывод в консоль
            printf("> %s\n", s);
        }
    }
    return 0;
}
 
//"открытие" канала
BOOL pipe_open(pipe* p, char* argv[], int argc){
    int       e;
    DWORD_PTR r;
    if(argc != 2)
        return FALSE;
 
    r = str_to_ptr(argv[1], &e);
    if(! e)
        return FALSE;
 
    p->hin  = (HANDLE)r;
    p->hout = NULL;
    return TRUE;
}
 
//синхронное чтение
DWORD pipe_read(const pipe* p, char* s, DWORD n){ 
    DWORD r = 0;
    BOOL  t = ReadFile(p->hin, s, n, &r, NULL);
    return (! t) ? 0 : r;
}
 
//преобразование целого числа из строки
static DWORD_PTR str_to_ptr(const char* s, int* e){
    DWORD_PTR p = 0;
    while(*s && (*s >= '0' && *s <= '9')){
        p = p*10 + (DWORD_PTR)(*s - '0');
        ++s;
    }
    *e = (! *s);
    return p;
}
Вопрос: Неверная кодировка при выводе в консоль

В моей программе нужно использовать очищение экрана - clrscr
но тогда весь русский текст, который выводится на консоль становится какой-то абракадаброй в не понятной кодировке.
Вот такой текст выводится, хотя программно задан другой, тоже самое, и когда я записываю значения в файл.
Ќ*¦¬ЁвҐ 1 ¤«п ᮧ¤**Ёп д*©«*
Ќ*¦¬ЁвҐ 2 ¤«п Їа®б¬®ва* д*©«*
Ќ*¦¬ЁвҐ 3 ¤«п Ї®ЁбЄ* а*Ў®в*ЁЄ®ў Ї® **Ё¬Ґ*®ў**Ёо жҐе
Ќ*¦¬ЁвҐ 4 ¤«п Ї®ЁбЄ* а*Ў®в*ЁЄ®ў Ї® §*а*Ў®вЄг
Ќ*¦¬ЁвҐ 5 ¤«п Ї®ЁбЄ* а*Ў®в*ЁЄ®ў Ї® д*¬Ё«ЁЁ
Ќ*¦¬ЁвҐ 6 ¤«п ўл室* Ё§ Їа®Ја*¬¬л
‚лЎҐаЁвҐ Їг*Єв ¬Ґ*о:

Может быть всё дело в этих настройках? уж больно глаз режет эта 866(OEM). Как это можно поправить?
Если залезть в код через блокнот, то все содержимое writeln переходит в такую же кодировку
Ответ: Да, можно через перекодировку сделать. Но часто бывает удобнее, если настроить саму консоль на нужную кодовую страницу. Например, в Delphi редактор использует страницу CP1251, а кодовая страница консоли настроена в соответствии с консольными настройками Windows - это по предустановкам CP866. Я лично в этом случае прямо в коде программы выполняю переключение консоли на ту же кодовую страницу, в которой работает редактор Delphi - т. е. на CP1251. Вот таким образом:
Код Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
program Project1;
 
{$APPTYPE CONSOLE}
 
uses
  SysUtils, Windows;
 
var
  S : String;
begin
  {Переключение окна консоли на кодовую страницу CP1251 (Win-1251).
  Если после переключения русские буквы показываются неверно,
  следует открыть системное меню консольного окна - щелчком мыши в левом
  верхнем углу окна консоли и выбрать:
  Свойства - закладка "Шрифт" - выбрать шрифт: "Lucida Console".}
  SetConsoleCP(1251);
  SetConsoleOutputCP(1251);
 
  Writeln('Этот текст правильно показывается на кодовой странице CP1251.');
  Write('Задайте текст: ');
  Readln(S);
  Writeln('Вы ввели текст: ', S);
 
  Readln;
end.
Во Free Pascal, видимо, редактор работает со страницей CP866. Вообще-то это та же кодовая страница в которой по предустановкам должна работать консоль Windows... Если консоль оказывается на кодовой странице CP1251, а нужно - CP866, то переключить, соответственно, можно так:
Код Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
...
 
uses
  Windows;
 
var
  S : String;
begin
  SetConsoleCP(866);
  SetConsoleOutputCP(866);
 
  Writeln('Этот текст правильно показывается на кодовой странице CP866.');
  Write('Задайте текст: ');
  Readln(S);
  Writeln('Вы ввели текст: ', S);
 
  Readln;
end.
Добавлено через 11 минут
Вот, нашёл обсуждение, как раз по такой же теме:
Вопрос: Про кодировку и консоль

По сути дела это был ответ на вопрос Nishen про кодировку и консоль. Хотел ответить вкратце, но текст получился длинным. Поэтому закинул на форум, мало ли, кому-то ещё пригодится

По поводу кодировок и консоли есть некий тонкий момент, который не сразу очевиден. Консоль - это одна программа, а то, что запускается из-под консоли - другая, совершенно перпендикулярная к программе-консоли. И их надо как-то согласовывать. К примеру, ты написал программу hello-world, которая печатает в utf16-le. Т.е. программа льёт в stdout набор байтов, который можно превратить в символы, если знать, что этот набор байтов записан по правилам, соответствующим кодировке utf16-le. Программа-консоль перехватывает вывод stdout от твоей программы и должна как-то весь этот набор байтов превратить в рисунки букв. А чтобы это сделать, программа-консоль должна знать, что набор байтов соответствует кодировке utf16-le. А откуда ей об это знать? Ниоткуда. Сама по себе она никак этого не узнает

В юниксовых программах-консолях обычно есть настройки, в которых помимо прочего содержатся ещё и настройки локали. Т.е. пользователь сам явно указывает, в какой кодировке работают программы, запущенные из-под консоли. Т.е. делает подсказку консоли, т.к. сама консоль узнать этого не может

Если попытаться посмотреть на весь процесс в целом, одновременно пытаясь разложить его на ещё более мелкие детали, то получается так. Сначала выставляем в переменных окружения что-нибудь типа LC_ALL=utf16-le (условно, я на память не помню, какими переменными и какими значениями надо настраивать). Далее запускаем программу-консоль. Программа-консоль подхватывает это значение и понимает, что вывод запущенных из-под консоли программ нужно рассматривать как кодировку utf16-le. Далее в консоли запускаем shell, в нём ещё раз набираем LC_ALL=utf16-le и запускаем нашу программу hello-world. Программа тоже подхватывает это значение и понимает, что всю печать нужно делать в кодировке utf16-le. Таким образом мы согласовали вывод программы hello-world в stdout и превращение этого stdout'а в рисунки букв в консоли. В реальной жизни это выглядит всё проще за счёт того, что эти настройки прописываются в конфигурационных скриптах типа .bashrc и нигде не надо вводить ручками значения LC_ALL. Правда это работает лишь до тех пор, пока не запустишь программу, которая игнорирует настройки локалей (например, потому что не умеет с ними работать) и не делает печать в stdout, например, принудительно в koi8. После этого для незнающих пользователей начинается порнография с тем, как увидеть вывод от программы

В случае windows'овской консоли суть примерно та же самая. Эта консоль по умолчанию настроена на то, что запущенные из-под неё программы печатают в кодировке DOS (возможно, и в какой-то другой, но не суть). Я не знаю, можно ли в самой консоли как-то эту настройку поменять, но наверное нельзя. При этом программы, которые пишутся в современных IDE, постфактум содержат в себе тексты, написанные в кодировке Win1251. В итоге получается такое же несогласованное состояние. Правда здесь оно уже лечится другими способами - в программу добавляются вызовы функций, которые приводят к тому, что весь stdout в процессе вывода конвертируется в кодировку DOS, чтобы она оказалась согласована с настройками консоли
Ответ:
Сообщение от Shamil1
Это не проблема языка, а проблема окружения. Программа абсолютно правильная и печатает на нужном языке. Чтобы видеть в консоли символы на неком языке, отличном от языка системы, то придётся выполнить ряд действий. Задайте кодировку с русскими символами (возможно, придётся установить язык) и запустите программу ещё раз.
У меня с этим проблем нет. Я имел в виду, что Console не избавит начинающих от необходимости разбираться с тем, что такое кодировка. И все
Вопрос: Выровнять текст на экране на Си

Текст записан одной длинной строкой. Выровнять текст на экране по правому краю, так что бы в каждой строке было 60 символов и каждая строка заканчивалась знаком препинания или пробелом. Выравнивание осуществить, вставляя дополнительные пробелы между словами (равномерно по всей строке). Есть такой код, но он удаляет все после первого слова
Код

#include <stdio.h>  
#include <string.h>  
#include <windows.h>  

void main() 

    char str[200]; 
    char space[10] = { ' ' }; 
    char smb = { ',' }; 
    char symb = { ' ' }; 
    SetConsoleCP(1251);//включить кодировку Win1251 при вводе с консоли  
    SetConsoleOutputCP(1251);//включить кодировку Win1251 при выводе на консоли  
    printf("Введите текст:\n"); 
    gets_s(str); 
    int i = 0,len,ns=0,ks,j,k; 
    len = strlen(str);//длина строки 
        while (str[i] != '\0') 
        { 
            while (str[i] == ' ')//пока встречается пробел перебираем символы  
                i++; 
            ns = i;//начало слова  
            while ((str[i] != ' ') && (str[i] != '\0'))//пока не встретится пробел или конец строки перебираем символы  
            { 
                i++; 
                ks = i - 1;//конец слова 
            } 
            k = ks + 1; 
            while (len != 60) 
            { 
                strcpy(str + k, space); 
                break; 
            } 
        }    
    printf("Ровный текст:\n"); 
    printf("%d\n", len); 
    puts(str); 
    getchar(); getchar(); 
}  

Ответ:
Текст записан одной длинной строкой. Выровнять текст на экране по правому краю, так что бы в каждой строке было 60 символов и каждая строка заканчивалась знаком препинания или пробелом. Выравнивание осуществить, вставляя дополнительные пробелы между словами (равномерно по всей строке). Есть такой код, но он удаляет все после первого слова
Код

#include <stdio.h>  
#include <string.h>  
#include <windows.h>  

void main() 

    char str[200]; 
    char space[10] = { ' ' }; 
    char smb = { ',' }; 
    char symb = { ' ' }; 
    SetConsoleCP(1251);//включить кодировку Win1251 при вводе с консоли  
    SetConsoleOutputCP(1251);//включить кодировку Win1251 при выводе на консоли  
    printf("Введите текст:\n"); 
    gets_s(str); 
    int i = 0,len,ns=0,ks,j,k; 
    len = strlen(str);//длина строки 
        while (str[i] != '\0') 
        { 
            while (str[i] == ' ')//пока встречается пробел перебираем символы  
                i++; 
            ns = i;//начало слова  
            while ((str[i] != ' ') && (str[i] != '\0'))//пока не встретится пробел или конец строки перебираем символы  
            { 
                i++; 
                ks = i - 1;//конец слова 
            } 
            k = ks + 1; 
            while (len != 60) 
            { 
                strcpy(str + k, space); 
                break; 
            } 
        }    
    printf("Ровный текст:\n"); 
    printf("%d\n", len); 
    puts(str); 
    getchar(); getchar(); 
}  

Вопрос: Ввод данных в консоль java

В коде программы находится таймер, который каждую секунду выводит в консоль текст.

Так же, в коде есть функция, которая ловит вводимые данные в консоли.

Проблема в том, что эти вводимые данные "покрывает" выводимый текст. А нужно, чтобы вводимый текст ВСЕГДА был под выводимым текстом. Проблема выглядит примерно вот так: смотрите вложение

Есть ли какое-нибудь решение данной проблемы?
Ответ:
Сообщение от Anton-B1ruk
Консоль сервера майнкрафт
ну так в чем проблема? У майнкрафта открытый код насколько я знаю. Пойдите и посмотрите как это реализовано

Добавлено через 5 минут
Я вот пошел скачал server.jar. Запусил его, открылось GUI приложение а не консоль. Покажите откуда вы скачали то что на скриншоте
Вопрос: Аргументы консоли, переменные внутри цикла, имена методов и объектов

В продолжение к теме
FatNinja, HOBATOP, изучил ваши примеры, разобрался в них.
Написал программку для решения задания к главе 1, вариант А по книге Блинов, Романчик - Java. Методы программирования. Список заданий прикреплю. Выкладываю вам на суд. Знаю, что в интернете есть готовые решения, но я их не смотрел, так как хочу разобраться сам. Поэтому прошу советов и сильно не пинать Вдогонку несколько вопросов:
1) Можно увидеть, что у меня есть совпадения в названиях методов и объектов. Насколько это критично? Просто называл по логике.
2) Не смог создать отдельный метод, работающий с аргументами консоли. Так как args из метода main в другом методе недоступен. Что нибудь подскажете?
3) Для переменных внутри цикла (к примеру i в цикле for) тоже обязательно придумывать осмысленные названия?
Кликните здесь для просмотра всего текста
1.Приветствовать любого пользователя при вводе его имени через командную строку.
2.Отобразить в окне консоли аргументы командной строки в обратном порядке.
3.Вывести заданное количество случайных чисел с переходом и без перехода на новую строку.
4.Ввести пароль из командной строки и сравнить его со строкой-образцом.
5.Ввести целые числа как аргументы командной строки, подсчитать их суммы (произведения) и вывести результат на консоль.
6.Вывести фамилию разработчика, дату и время получения задания, а так же дату и время сдачи задания.

Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
/** Это программа решения задания к главе 1, вариант А
  * по книге Блинов, Романчик - Java. Методы программирования.
  * @author striker24
  */
  
import java.util.Scanner;
import java.util.Random;
import java.util.Date;
  
public class Chapter1VarA {
        
    public static void main (String[] args) {
        
        
        Scanner scan = new Scanner(System.in);
        String name = name(scan, "Enter your name: "); //приветствие пользователя
        System.out.println("Greetings, " + name);
        System.out.print("Arguments in reverse order: "); //аргументы консоли в обратном порядке
        for (int i = args.length - 1; i >= 0; i--) {
        System.out.print(args[i] + "; ");
        }
        int[] rndNumbers = randomNumbers(scan); // случайные числа с переводом и без перевода на следующую строку
        System.out.println("Random numbers with Ln: ");
        for (int i : rndNumbers) {
            System.out.println(i + ";");
        }
        System.out.print("Random numbers withoutLn: ");
        for (int i : rndNumbers) {
            System.out.print(i + "; ");
        }
        String checkPassword = checkPassword(scan, "\nInsert the password: "); // проверка пароля
        System.out.println(checkPassword);
        int sum = 0, product = 1; // сумма и произведение аргументов консоли
        for (int i = 0; i < args.length; i++) {
            sum += Integer.parseInt(args[i]);
            product *= Integer.parseInt(args[i]);
        }
        System.out.println("The sum of arguments: " + sum + "\nThe product of arguments: " + product);
        String developerDateTime = developerDateTime(scan, "Insert your surname: "); //вывод фамилии разработчика и времени сдачи проекта
        System.out.println(developerDateTime);
        
    }
    
    /** 
     * Метод запроса имени пользователя
     */
        
    private static String name(Scanner scan, String label) {
        
        System.out.println(label);
        String str = scan.nextLine();
        return str;
        
    }
        
    /** 
     * Метод запроса количества случайных чисел
     * и составляющий из них массив.
     */
     
    private static int[] randomNumbers(Scanner scan) {
        
        Random rnd = new Random();
        System.out.println("\nVedite kolvo: ");
        int quantity = scan.nextInt();
        int[] rndNumbers = new int[quantity];
        for (int i = 0; i < quantity; i++) {
            rndNumbers[i] = rnd.nextInt();
        }
        return rndNumbers;
    
    }
    
    /**
     * Метод проверки корректности ввода пароля.
     * Пароль по умолчанию "Password".
     */
    
    private static String checkPassword(Scanner scan, String label) {
        
        System.out.println(label);
        String check = "";
        String password = scan.next();
        if (password.equals("Password")) {
            check = "Correct. Access granted.";
        } else {
            check = "Wrong. Access denied.";
        }
        return check;
        
    }
    
    /**
     * Метод запроса фамилии разработчика.
     * Время сдачи проекта принимается равным 
     * текущему системному времени.
     */
    
    private static String developerDateTime(Scanner scan, String label) {
        
        System.out.println(label);
        String developer = scan.next();
        Date date = new Date();
        String developerDateTime = "This programm is writed by developer with surname: " + developer + ".\nThe date of finish: " + date.toString() + ".";
        return developerDateTime;
        
    }
        
}
Ответ: aleksandy, уважаемый Вы ТС'у что-то можете посоветовать, привести пример какой-нибудь, пояснить что вот это гу-у-у-д, а вот это ай-яй-яй? Вот какой смысл дискутировать со мной? Да, я сознательно нарушаю в подобных примерах какие-то "незыблемые" правила только лишь для того, чтобы показать, что то или иное действие возможно (или же невозможно). На Вашу реплику могу ответить следующее: всё под спойлером. Вы просили main в другом классе и в другом пакете - извольте, только не говорите, что я опять что-то нарушил или не так сделал. Ok?
Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
package com.home;
 
import java.util.Scanner;
 
public class NothingBack{
    public static StringBuilder sb = new StringBuilder();
 
    public void addName(){
        System.out.print("Напишите имя: ");
        sb.append(new Scanner(System.in).nextLine()).append(" ");
    }
    public void addSurname(){
        System.out.print("Напишите фамилию: ");
        sb.append(new Scanner(System.in).nextLine());
    }
    public void addPatronymic(){
        System.out.print("Напишите отчество: ");
        sb.append(new Scanner(System.in).nextLine()).append(" ");
    }
 
    public static void main(String[] args) {
        NothingBack nothingBack = new NothingBack();
        nothingBack.addName();
        nothingBack.addPatronymic();
        nothingBack.addSurname();
        System.out.println(sb.toString());
    }
}
 
package com.home.work;
 
import com.home.NothingBack;
 
public class TwoNothingBack extends NothingBack {
    public static void main(String[] args) {
        TwoNothingBack tnb = new TwoNothingBack();
        tnb.addName();
        tnb.addPatronymic();
        tnb.addSurname();
        System.out.println(sb.toString());
    }
}

Всего наилучшего!