Как прекратить зацикливание, когда вход является нулевым (для int) Java - PullRequest
0 голосов
/ 20 октября 2018

Я только что создал свою собственную программу для остановки цикла, когда ввод null, но эта программа может успешно работать только со строкой.

Scanner scan = new Scanner(System.in);
String name = " ";
while(true) {
    name = scan.nextLine();
    if(name.equals("")) {
       break;
    }
}

так что, если вы ничего не положили на String name Вы просто нажимаете Enter на клавиатуре, и цикл останавливается.

, но когда вы пытаетесь изменить String на int, возникает одна проблема.

Scanner scan = new Scanner(System.in);
int name = " ";
while(true) {
    name = Integer.parseInt(scan.nextLine());
    if(name....) {
       break;
    }
}

что необходимо заполнить if?

Ответы [ 4 ]

0 голосов
/ 20 октября 2018

Я вижу здесь одну проблему.Вы не можете инициализировать int name = "";int должен иметь числовое значение в диапазоне от отрицательного 2³¹ до положительного 2³¹-1, но вы не можете установить значение null, так как это примитивный тип данных.

При каждом использовании scan.nextInt ();программа не продолжится, пока вы не введете номер.Если вы хотите разорвать цикл, просто нажав на кнопку ввода, попробуйте следующее: -

...
int name=0;
while(true) {
    try {
        name = Integer.parseInt(scan.nextLine());
    }
    catch(Exception ex) {
        break;
    }
}

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

Если вы не знаете «Обработка исключений», я предлагаю вам поискать в Интернете и изучить его, потому что это очень полезный блок для использования впрограммы.

0 голосов
/ 20 октября 2018

Вы можете рассматривать ваши входные данные как строки, даже если они являются числовыми значениями.Это означает, что ваш первый блок кода будет работать, если вам нужно только найти пустое значение после потока входных данных (независимо от того, что они: abc или 123).

0 голосов
/ 20 октября 2018

Одним из решений является использование scan.nextInt()

Это сканирует следующий токен ввода как int

0 голосов
/ 20 октября 2018

Здесь нет необходимости .

В этом весь смысл: именно вы определяете, что должно произойти.

Первое, что нужно понять, это потенциалдиапазон значений int.Мы говорим о положительных и отрицательных числах здесь.

Таким образом, один вариант может быть остановлен на 0. Или на -1.

Но в том-то и дело: как только вы отворачиваетесь от струн (что можетбыть нулевым, пустым или содержать все виды информации) к чему-то более конкретному, вы теряете некоторые степени свободы.

Таким образом, реальный ответ таков: здесь нет «общего» ответа.Если вы настаиваете на превращении пользовательского ввода в значение int, то вы ограничены диапазоном возможных значений int.И если вы не определите какое-либо правило, такое как «любые отрицательные числа означают стоп », у вас нет никакого способа узнать, когда остановиться.

...