程序立即终止

时间:2014-11-29 02:53:03

标签: java

我正在研究一个Java程序,该程序要求用户提供数字,当他们不输入数字时,它会被一个InputMismatchException异常捕获。当异常发生两次时,程序应结束并向用户提供数字的总和。但是,我无法让程序在其当前状态下运行。当我运行该程序时,它会立即终止,甚至不会要求任何输入。一旦我理解了这一点,我甚至不确定我的工作是否有效!任何指导表示赞赏。

public static void main(String[] args) {

    float input = 0; 
    float sum = 0; 
    int count = 0; 
    boolean attempt = true;
    Scanner in = new Scanner(System.in); 

    while (attempt)
    {
        try
        {
            System.out.print("Enter a number: "); 
            input = in.nextFloat(); 
            sum += input; 
        }
        catch(InputMismatchException e)
        {
            System.out.println("Not a number. Try again"); 
            count ++; 
            if (count >=2)
            {
                attempt = false; 
            }
        }
    }

    System.out.println("Sum: " + sum); 


}

}

1 个答案:

答案 0 :(得分:2)

我所做的只是在catch子句中添加in.nextLine()来更正代码。

in.nextLine();
System.out.println("Not a number. Try again"); 
count ++;

你的Scanner对象留下了一个悬挂的行尾字符,用于输入in.nextFloat()在2 nd 迭代中立即拾取的非数字。< / p>

这是您可以运行的完整课程。

import java.util.InputMismatchException;
import java.util.Scanner;

public class Sum {

    public static void main(String[] args) {
        float input = 0; 
        float sum = 0; 
        int count = 0; 
        boolean attempt = true;
        Scanner in = new Scanner(System.in); 

        while (attempt)
        {
            try
            {
                System.out.print("Enter a number: "); 
                input = in.nextFloat(); 
                sum += input; 
            }
            catch(InputMismatchException e)
            {
                in.nextLine();
                System.out.println("Not a number. Try again"); 
                count ++;
                if (count >=2)
                {
                  attempt = false; 
                }
            }
        }

        System.out.println("Sum: " + sum);
    }
}