0
    Scanner scanner = new Scanner(System.in);
    System.out.println("Width:");
    int width = scanner.nextInt();
    System.out.println("Height:");
    int height = scanner.nextInt();
    System.out.println("Name:");
    String name = scanner.nextLine();
    GUI frame = new GUI(name, width, height);

Программа спрашивает высоту, ввожу высоту, спрашивает длину, ввожу длину, спрашивает имя и сражу же создаёт объект класса GUI, не дожидаясь моего ответа

Hakob
  • 1
  • 1

2 Answers2

1

nextInt() не читает следующий символ новой строки, поэтому первая nextLine() (которая возвращает оставшуюся часть текущей строки) всегда будет возвращать пустую строку.

Попробуйте, например, изменить свой код так:

Scanner scanner = new Scanner(System.in);
System.out.println("Width:");
int width = scanner.nextInt();
System.out.println("Height:");
int height = scanner.nextInt();
System.out.println("Name:");
String name = "";
while (!(name = scanner.nextLine()).isEmpty()) { //проверка на пустую строку, когда еще ничего не введено
    GUI frame = new GUI(name, width, height);
}
1

Либо же, если это не важно, поставить name в начале.

 Scanner scanner = new Scanner(System.in);
      System.out.println("Name:");
      String name = scanner.nextLine();
      System.out.println("Width:");
      int width = scanner.nextInt();
      System.out.println("Height:");
      int height = scanner.nextInt();
 GUI frame = new GUI(name, width, height);