2015-02-10 5 views
-1

Да, это проблема домашней работы. Я новичок в программировании. Я хорошо использую if/else для циклов, так как мой профессор просил нас в цикле. Я смущен. Это вопрос ...тест на ошибки типа данных в циклах java

Q1) Предположим, вы пишете игровую программу, которая включает в себя 2-значные номера, причем каждое число состоит из двух разных цифр. Проверьте, принимаются ли номера, введенные в последовательность, для использования в этой игре. Проверьте ошибки ввода (включая тип).

Мой цикл while для проверки типа данных работает нормально сначала, но после ввода int и я не могу проверить тип данных. Может ли кто-нибудь объяснить эту проблему мне, пожалуйста? Спасибо ...

public static void main(String[] args){ 

int num = 0; 

Scanner input = new Scanner(System.in); 
System.out.println("Enter a 2-digit number. The digits should be different. zero to stop"); 

while(!input.hasNextInt()){ 
    System.out.println("Not an integer,try again " + num); 
    input.next(); 
} 
num = input.nextInt(); 


while(num != 0){ 

while(num < 10 || num >= 99){ 
System.out.println("NOT good for your game! " + num); 
System.out.println("Enter a 2-digit number. The digits should be different. Zero to stop"); 
    num = input.nextInt(); 
    } 

System.out.println("Good for your game! Play! " + num); 
    num = input.nextInt(); 
    } 
} 
} 
+1

, часть которых вы смущены точно? –

+0

Непонятно, в чем проблема. Тип данных - int. Что значит проверить тип данных? Кроме того, что это имеет какое-то отношение к циклу while? –

+0

Первая проблема, которую я вижу, заключается в том, что вы проверяете число меньше десяти и больше 99, что делает их 3 цифры, это правильно, но не проверяет числа, такие как 11, 22, 33, 44, 55 , 66, 77, 88 и 99, которые вы не хотите, так как они одни и те же цифры –

ответ

0

Петля в то время как в первом проверил System.in входит в разряд (INT) или нет: while(!input.hasNextInt()), но когда вы первый вход цифра, то выход из цикла и ввести его в следующие 2 петли:

while(num != 0){ 
    while(num < 10 || num >= 99){ 

, а затем в конце внутреннего контура у вас есть:

num = input.nextInt(); 

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

Я хотел бы предложить вам изменить весь цикл в:

public static void main(String[] args) { 

    int num = 1; 

    Scanner input = new Scanner(System.in); 
    do { 
     System.out.println("Enter a 2-digit number. The digits should be different. zero to stop"); 
     if (!input.hasNextInt()) { 
      System.out.println("Not an integer,try again " + num); 
     } else { 
      num = input.nextInt(); 
      if (num < 10 || num >= 99) { 
       System.out.println("NOT good for your game! " + num); 
      } else { 
       System.out.println("Good for your game! Play! " + num); 
      } 
     } 
    } while(num != 0); 

    input.close(); 
    System.out.println("game stop"); 
} 
+0

большое вам спасибо. Думаю, я понял это сейчас. У меня вопрос, поэтому я не могу использовать цикл while для решения этой проблемы? –

+0

Я думаю, что вы можете, я просто положил его на конец цикла «do ... while». вы также можете перенести свое условие на начало в цикле 'while {}'. – LynxZh

-1
import java.util.Scanner; 

public class Number1 { 

public static void main(String[] args) { 
    Scanner sc = new Scanner(System.in); 
    String prompt = "Enter a 2-digit number. The digits should be different. Zero to stop:"; 

    getInt(sc,prompt); 

} 


public static void getInt(Scanner sc,String prompt) { 

    System.out.println(prompt); 
    int num; 

    while (!sc.hasNextInt()) 
    { 
     System.out.println("Not an integer, Try again"); 
     sc.next(); 
    } 

    num = sc.nextInt(); 

    while(num != 0) { 
     if (num < 10 || num >= 99 || num == 0) 
     { 
      System.out.println("Not good for your game!"); 
     } 
     else 
     { 
      System.out.println("Good for your game! Play!"); 
     } 

     System.out.println(prompt); 
     num = sc.nextInt(); 

    } 

} 

}

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

  • Нет связанных вопросов^_^