Как l oop пользовательский ввод, пока не введено целое число? - PullRequest
0 голосов
/ 01 мая 2020

Я хочу запустить интерактивную программу, в которой пользователю предлагается ввести количество студентов. Если пользователь вводит букву или другой символ помимо целого числа, его следует снова спросить («Введите количество студентов:»)

У меня есть следующий код:

public int[] createArrays(Scanner s) {
    int size;
    System.out.print("Enter the number of students: ");
    size = s.nextInt();** 
    int scores[] = new int[size];
    System.out.println("Enter " + size + " scores:");
    for (int i = 0; i < size; i++) {
      scores[i]=getValidInt(s,"Score " + (i + 1) + ": ");
    }
    return scores;
}

Как мне создать al oop для этого?

Ответы [ 3 ]

1 голос
/ 01 мая 2020

Давайте добавим al oop, возьмем значение как String и проверим, является ли оно числом:

String sizeString;
int size;
Scanner s = new Scanner(System.in);
do {
        System.out.print("Enter the number of students: ");
        sizeString = s.nextLine();

} while (!(sizeString.matches("[0-9]+") && sizeString.length() > 0));
size = Integer.parseInt(sizeString);
0 голосов
/ 01 мая 2020

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

int numberOfStudents;

while(true)
{
    try {
        System.out.print("Enter the number of student: ");
        numberOfStudents = Integer.parseInt(s.next());
        break;
    }
    catch(NumberFormatException e) {
        System.out.println("You have not entered an Integer!");
    }
}

//Then assign numberOfStudents to the score array
int scores[] = new int[numberOfStudents]
0 голосов
/ 01 мая 2020

попробуйте

public int[] createArrays(Scanner s) {
    int size;
    System.out.print("Enter the number of students: ");

    while(true) {
        try {
              size = Integer.parseInt(s.nextLine());
              break;
        }catch (NumberFormatException e) {
            System.out.println();
            System.out.println("You have entered wrong number");
            System.out.print("Enter again the number of students: ");
            continue;
        }
    }

    int scores[] = new int[size];
    System.out.println("Enter " + size + " scores:");
    for (int i = 0; i < size; i++) {
      scores[i]=getValidInt(s,"Score " + (i + 1) + ": ");
    }
    return scores;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...