2014-10-12 69 views
-1
package exercises; 
import java.util.*; 

public class Try_and_catch { 

    public static void main(String[] args) { 

     Scanner input = new Scanner(System.in); 
     int x=1; 
     do 
     { 
      System.out.println("Enter first number"); 
      int n1 = input.nextInt(); 
      System.out.println("Enter second number"); 
      int n2 = input.nextInt(); 
      int sum= n1/n2; 
      System.out.println(sum); 
     } while(x==1); 
    } 
} 

上面的代码只需要输入整数,我的问题是如何处理错误,每当用户输入一个字符?如何解决InputMismatchException?

+0

如果你输入有效的整数,那么应该没有输入不匹配异常。请确保您在由空格分隔的同一行中输入两个整数。 – 2014-10-12 03:57:33

+0

你输入了什么? – 2014-10-12 03:57:34

+0

上面的代码需要输入只有整数,,,我的问题是如何处理错误,每当用户输入一个字符?.... thak你 – 2014-10-12 03:58:18

回答

0

使用try块:

boolean again = true; 
int n1; 
while (again) { 
    try { 
    System.out.println("Enter first number"); 
    input.nextInt(); 
    again=false; 
    } 
    catch(InputMismatchException ime) 
    { 
    // do nothing! 
    } 
} 

这里会发生什么是相当简单:如果我们得到一个异常,那么“又”未设置为TRUE,我们就回去周围循环。如果我们在没有异常的情况下离开try块,然后再次切换,我们快乐地前进。

+0

谢谢你的答案...它的作品....但是当我运行它,并击中任何字符“输入第一个纽约州”不断显示....这是我的下一个问题...谢谢你这么多... – 2014-10-12 04:10:10

+0

啊,对不起,这是扫描仪中的一个奇怪的故障。在catch块中添加对input.nextLine()的调用。这将吃掉nextInt()留在管道中的换行符。应该有这个想法,我的不好。 – 2014-10-12 04:15:31

+1

如果将此代码封装在方法中并使用该代码获取每个数字而不是重复代码,会更好。 – dramzy 2014-10-12 04:18:28