0

Текст задачи "напишите простую программу, которая:

-запрашивает количество незнакомцев, с которыми нужно встретиться

-построчно читает имена незнакомцев

-построчно выводит: "Hello, (имя незнакомца)" для каждого незнакомца. Гарантируется, что введенное количество незнакомцев — целое число.

Частные случаи:

-Если количество незнакомцев равно нулю, программа должна вывести: "Oh, it looks like there is no one here".

-Если количество незнакомцев отрицательное, программа должна вывести: "Seriously? Why so negative?".

 import java.io.IOException;
import  java.util.Scanner;
public class HelloStrangers {
    public static void main(String[] args) throws IOException {
        Scanner Scanner = new Scanner(System.in);
        int guests = Scanner.nextInt();
        if (guests>0){
            for (int i = guests; i>0; i--) {
                String name = Scanner.nextLine();
                System.out.println("Hello, "+ name);
            }
        } else if (guests==0){
            System.out.println("Oh, it looks like there is no one here");
        } else {
            System.out.println("Seriously? Why so negative?");}
        }

}

Проблема моего кода в том, что при вводе, например, "3" после нажатия энтера, я сразу же получаю "Hello," дальше я могу ввести имена двух персон, а не трёх. С ними всё как и должно быть: "Hello, (name)", после чего программа завершается Пробовал задать переменную гуэстс через System.in.read(). Но так только хуже было. Можно было именна вводить, до бесконечности Предложенный ранее ответ Особенности использования scanner.nextLine() если я , его правильно понял - не помог. Я добавил просто ещё одну переменную с Scanner.nextLine(), после переменной guests.

1 Answers1

0
import java.io.IOException;
import java.util.Scanner;

public class HelloStrangers {
    public static void main(String[] args) throws IOException {
        Scanner Scanner = new Scanner(System.in);
        int guests = Integer.valueOf(Scanner.nextLine()); // вместо Scanner.nextInt()
        if (guests>0){
            for (int i = guests; i>0; i--) {
                String name = Scanner.nextLine();
                System.out.println("Hello, "+ name);
            }
        } else if (guests==0){
            System.out.println("Oh, it looks like there is no one here");
        } else {
            System.out.println("Seriously? Why so negative?");
        }
    }
}
ya_ilya
  • 81
  • К сожалению не помогло:
    • После ввода например "3", и нажатия энтер, программа ничего не пишет (это правильно, так и должно быть)
    • После ввода первого имени и нажатия энтер, вылетает 2 сообщения вместо одного Helo, Helo, (введённое имя)
    • После ввода второго имени программа завершает работу
    – adeptus astartes Aug 10 '22 at 20:18
  • System.out.println("Hello, "+ Scanner.nextLine()); ещё заменил и удалил переменную name. Теперь, всё супер – adeptus astartes Aug 10 '22 at 20:44