2016-08-31 9 views
0
import java.util.Scanner; 
import static java.lang.System.out; 

public class TestingStuf2 { 

    public static void main(String[] args) { 
     Scanner keyboard = new Scanner(System.in); 

      out.println("Enter a number"); 

      int number = keyboard.nextInt(); 

     while (number < 10) { 
      if (number < 10) { 
       out.println("This number is too small."); 
       keyboard.nextInt(); 
      }else{ 
       out.println("This number is big enough."); 
      }  
     } 
     keyboard.close(); 
    } 

} 

У меня просто небольшая проблема, связанная с этим кодом. Я только начал изучать Java, эти петли меня все время путают. Когда я запустил эту программу, если я введу число меньше 10, я получаю сообщение с надписью «« Этот номер слишком мал », а затем он позволяет мне вводить текст снова. Однако, если я наберу число больше 10, я получу то же сообщение.Кроме того, если первое число, которое я вводил, больше 10, я вообще не получаю сообщение, программа заканчивается. Почему это происходит?Как я могу заставить цикл работать в моей программе Java?

+1

Вы объяснили, какое поведение вы получаете - как оно отличается от ожидаемого? – Blorgbeard

+0

Будьте более ясны о том, что происходит против того, что вы ожидали. Как написано, довольно сложно ответить на ваш вопрос. – nhouser9

ответ

3

Я думаю, что вы забыли переназначить переменную number. причина, почему

Однако, если я введите число больше, чем 10, я получаю такое же сообщение .

Пожалуйста, попробуйте код ниже. Спасибо за комментарий @ Dev.Joel. Я изменил петлю на do-while, чтобы лучше рассмотреть случай.

import java.util.Scanner; 
import static java.lang.System.out; 

public class TestingStuf2 { 

    public static void main(String[] args) { 
     Scanner keyboard = new Scanner(System.in); 

      out.println("Enter a number"); 

      int number = keyboard.nextInt(); 

     do{ 
      if (number < 10) { 
       out.println("This number is too small."); 
       /* 
       * You should reassign number here 
       */ 
       number = keyboard.nextInt(); 
      }else{ 
       out.println("This number is big enough."); 
      }  
     }while(number < 10); 
     keyboard.close(); 
    } 

} 

Я предлагаю вам использовать break point отлаживать вашу проблему. В вашем случае, например, вы назначаете от 2 до number, а «Это число слишком мало» печатается. Затем вы используете keyboard.nextInt(), чтобы пользователь вводил другой int. Тем не менее, число все равно 2. Таким образом, условие number < 10 верно, независимо от того, что вы ввели в этот раз, и "This number is too small" снова напечатан.

+1

, если вы вводите большее число первых 10, никогда не входит в то время, когда –

+0

@ Dev.Joel Спасибо, что напомнили. Я отредактирую ответ. – Gearon

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