2015-08-04 3 views
1

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

Кто-нибудь знает, что я делаю неправильно? Я уверен, что это просто, что мне не хватает.

package prac4; 
import java.util.Scanner; 

public class PrintNums { 
    public static void main(String[] args) { 
    int number=1; 
    Scanner sc = new Scanner(System.in); 
    System.out.println("What number should I count to?"); 

    while (sc.nextInt()<0){ 
     System.out.println("Please enter a positive integer: "); 
     if(sc.nextInt()>0){ 
     number = sc.nextInt(); 
    } 
     } 
    number = sc.nextInt(); 
    sc.close(); 


    System.out.println(number); 
} 

}

ответ

1

Каждый раз, когда вы звоните sc.nextInt() программа зависает и ждет вашего входа. Вам нужно позвонить sc.nextInt() только один раз и назначить number только один раз за один цикл, а затем проверить свое состояние:

while ((number = sc.nextInt()) < 0) { 
     System.out.println("Please enter a positive integer: "); 
    } 
    System.out.println(number); 
1

вы спрашиваете вход 2 раза (sc.nextInt()), так что если вы хотите, чтобы получить значение один раз вы должны вызвать sc.nextInt() один раз. вы можете изменить фрагмент, как показано ниже.

package prac4; 
import java.util.Scanner; 

public class PrintNums { 
public static void main(String[] args) { 
Scanner sc = new Scanner(System.in); 
int number=sc.nextInt(); 
System.out.println("What number should I count to?"); 

while (number<0){ 
    System.out.println("Please enter a positive integer: "); 

    number = sc.nextInt(); 
} 

sc.close(); 


System.out.println(number); 
} 
} 
+1

Я не видел вышеуказанное решение, я бы предпочел выше одного – Niranjan

Смежные вопросы