2016-11-01 58 views
-1

我想说当有人试图在此代码中输入一个字符串时输入一个整数。输入一个整数扫描器的字符串

你能帮我吗?

这里是我的代码:

 import java.util.Scanner; 
     public class kl { 
      public static void main(String[] args) { 
       boolean primen = true; 
       Scanner input = new Scanner(System.in); 
       System.out.print("Please enter a positive integer that is prime or not : "); 
       int ncheck = input.nextInt(); 
       if (ncheck < 2) { 

        primen = false; 

       } 
       for (int i = 2; i < ncheck; i++) { 
        if (ncheck % i == 0) { 
         primen = false; 
         break; 
        } 
       } 
       if (primen == true) { 
        System.out.println(ncheck + " is a prime number."); 
       } 
       else { 
        System.out.println(ncheck + " is not a prime number."); 
       } 
      } 
     } 
+0

看起来比Java更像Java吗? – adeneo

+1

小心你的标签 - 'javascript'与* java不相关。 –

+0

我是这样做的 –

回答

0

你可以在这里找到自己的解决方案:Exception handling,或者使用下面

下面的代码是完整的代码:

while(true){ 
System.out.print("Please enter a positive integer that is prime or not : "); 
try{ 
    int i = input.nextInt(); 
    break; 
}catch(InputMismatchException e){ 
    System.out.print("Wrong type input, pls try again!"); 
    input.nextLine(); \\ prevent infinite loop 
} 

你可以看到:我使用异常处理处理器来捕获InputMismatchException并在控制台上打印消息。您可以用Exception取代InputMismatchException。这是最大的Exception java中的处理程序类

+0

非常感谢你的信息它的工作,但它需要 import java.util.InputMismatchException –

0

有两种方法可以与Scanner一起使用。

  • 呼叫nextInt()然后捕捉和处理InputMismatchException如果下一个输入令牌不是一个整数,你会得到。

  • 致电hasNextInt()。如果返回true,请致电nextInt()

在这两种情况下,如果你期望一个整数,用户输入的其他事情,那么无论nextInt()hasNextInt()将“消费”的意外的字符。所以如果你想让用户再试一次,你需要拨打nextLine()这将读取线上所有剩余的字符。你通常会丢弃它们。

有关处理异常的更多信息:

欲了解更多有关使用Scanner