2017-01-15 8 views
0

Я делаю игру с угадыванием, где я могу вводить 1-100, но у меня есть проблема только при принятии чисел, если я набрал букву при первом запуске программы, она даст мне ошибку и выполнит программа мгновенно image here, но если ityped число после запуска программы и напечатать письмо рядом, это даст мне неправильное сообщение, оно должно отображать сообщение с сообщением «неверный ввод». image here Любое предложение спасибо.InputMismatchException для номера предположений

package m1; 
    import java.util.InputMismatchException; 
    import java.util.Scanner; 


    public class M1{ 


public static void main(String[] args) { 

    Scanner Scanner = new Scanner(System.in); 

    int between = 100; 
    int secretNumber = (int)(Math.random()*between); 
    int inputNum = 0; 
    int guesses = 0; 

    System.out.println("Please enter your guess: "); 
    inputNum = Scanner.nextInt(); 
    guesses++; 


    while (inputNum != secretNumber) { 

     try { 

     // number too high or too low 
     if (inputNum > 100 || inputNum < 1) { 
      System.out.println("Out of Range!"); 
      System.out.println("Enter a guess between 1 and " + between + "."); 
      inputNum = Scanner.nextInt(); 
     } 

     // less than secretNumber 
     if (inputNum < secretNumber) { 
      System.out.println("Too Low...Try Again!"); 
      inputNum = Scanner.nextInt(); 
      guesses++; 
     } 

     // greater than secretNumber 
     if (inputNum > secretNumber) { 
     System.out.println("Too High...Try Again!"); 
     inputNum = Scanner.nextInt(); 
     guesses++; 
    } 
    } 
    catch(InputMismatchException e){ 
     System.out.println("Invalid Input"); 
     Scanner.next(); 

    } 
    } 


    System.out.println("\nWell done! The secret number was " + secretNumber + "." + "\nYou took " + guesses + " guesses."); 
    } 

}

+0

Это не выглядит как JavaScript ... Вы уверены, что вы делаете свою домашнюю работу, используя правильный язык? В любом случае не забудьте прочитать руководство [MCVE] по предоставлению кода и поиска похожих вопросов для языка, который вам действительно нужно использовать. –

+0

Я делаю java project.I нажал javascript извините> _ lec

ответ

0
  • Обычно называют имена переменных в Java с помощью camelCase в большинстве случаев.
  • Вам действительно не нужно ловить никаких исключений в вашем случае, так как вы можете просто сделать scanner.next(), если scanner.hasNextInt() is false. На этот раз пользователю предлагается ввести номер.

Попробуйте код ниже here!

import java.util.Scanner; 

class Main { 
    public static void main(String[] args) { 

    Scanner scanner = new Scanner(System.in); 

    int between = 100; 
    int secretNumber = (int)(Math.random() * between); 
    int guesses = 0; 

    System.out.println("Lec's Guessing Game"); 
    System.out.println("===================="); 
    System.out.print("Please enter a guess between 1 and " + between + "(inclusive):"); 

    while(scanner.hasNext()){ 
     if(scanner.hasNextInt()){ 
     int inputNum = scanner.nextInt(); 
     guesses++; 
     if(inputNum == secretNumber) { 
      System.out.println("\nWell done! The secret number was " + secretNumber + "." + "\nYou took " + guesses + " guesses."); 
     } 
     // number too high or too low 
     if (inputNum > between || inputNum < 1) { 
      System.out.println("Out of Range!"); 
      System.out.print("Enter a guess between 1 and " + between + "(inclusive):"); 
     } 
     // less than secretNumber 
     if (inputNum < secretNumber) { 
      System.out.println("Too Low...Try Again!"); 
      System.out.print("Enter a guess between 1 and " + between + "(inclusive):"); 
     } 
     // greater than secretNumber 
     if (inputNum > secretNumber) { 
      System.out.println("Too High...Try Again!"); 
      System.out.print("Enter a guess between 1 and " + between + "(inclusive):"); 
     } 
     } else{ 
     System.out.print("ERROR: Invalid Input"); 
     System.out.print("Please enter a number: "); 
     scanner.next(); 
     } 
    } 
    } 
}