2015-11-20 3 views
0

я очень запутался, почему это не работает, был бы признателен за помощь:найти минимальное число из пользовательского ввода

import java.util.Scanner; 

public class Main 
{ 
    public static void main(String[] args) 
    { 
     Scanner in = new Scanner(System.in); 
     int min = Integer.MAX_VALUE; 
     System.out.println("Enter a number"); 
     int input = in.nextInt(); 
     while(in.hasNextInt()){ 
       if(input < min){ 
         min=input; 
       } 
     } 
     in.close(); 
     System.out.println(min); 

    } 
} 

Петля не заканчивается на какой-то причине, когда я ввожу нечто иное, чем int.

Console screenshot

+1

Точный вопрос здесь ранее сегодня: http://stackoverflow.com/questions/33830718/why-wont-this-print-any-integers – jiaweizhang

+0

Спасибо за помощь, кажется, что включение in.next(); внутри петли зафиксировано это исправлено ... – ak1652

ответ

0

Потому что он ждет следующего целого числа, и будет продолжать читать навсегда. Одним из решений является использование getline() и анализ возвращаемой строки как целого. Если преобразование не удастся, вам придется обработать его. Если возвращается строка длины 0, выйдите из нее.

0

Решение будет принимать .next() и использовать try-catch для разбора int из него:

while (in.hasNext() { 
    String input = in.next(); 
    try { 
     int printInt = Integer.parseInt(input); 
     System.out.println(printInt); 
    } catch() {} 
} 

Кроме того, я думаю, вы забываете позвонить in.nextInt() внутри while цикла.