Java 扫描器赢得';我不记得以前输入的整数了

Java 扫描器赢得';我不记得以前输入的整数了,java,java.util.scanner,Java,Java.util.scanner,我正在尝试编写一个基本的计算器,它将两个数字相加。首先,它假设输入的数字是整数,如果不是,它抛出并捕获一个异常,并假设输入是双精度的。除非输入的第一个数字是整数,第二个数字是双倍,否则程序运行正常。它只是挂起,不执行任何操作 /* Reads two numbers. Assuming the entered input is integer, Adds * the numbers and prints out the result If not integer

我正在尝试编写一个基本的计算器,它将两个数字相加。首先,它假设输入的数字是整数,如果不是,它抛出并捕获一个异常,并假设输入是双精度的。除非输入的第一个数字是整数,第二个数字是双倍,否则程序运行正常。它只是挂起,不执行任何操作

        /* Reads two numbers. Assuming the entered input is integer, Adds
         * the numbers and prints out the result If not integer, throws an
         * InputMismatchException.*/

        Scanner inputSource = new Scanner(System.in);

        try 
        {
            Integer input1, input2, result;

            input1 = inputSource.nextInt();
            input2 = inputSource.nextInt();

            result = input1 + input2;

            System.out.println("The Sum of " + input1 + " and " + input2 + " is " + result);
        }

        catch (java.util.InputMismatchException e) 
        {

            double input1, input2, result;

            input1 = inputSource.nextDouble();
            input2 = inputSource.nextDouble();

            result = input1 + input2;


            System.out.println("The Sum of " + input1 + " and " + input2 + " is " + result);
        }

如果我正确地解释了您的问题,当您输入一个double作为第二个数字时,它正在输入语句的catch块,因此您需要输入第二个数字。要解决此问题,您需要分离
nextInt()
方法调用以检查double,而不是将它们放在同一
try catch
块中,然后您应该使用逻辑来决定将哪两个值相加。

我将输入作为字符串读取,并将整个字符串转换为double并显示它

这可以通过BufferedReader以不同的方式完成,可以添加try和catch块。希望这有帮助

import java.util.*;
import java.io.*;
public class HelloWorld
{
    public static void main(String []args)
        {
             Scanner inputSource = new Scanner(System.in);
             String input1 = null; 
             String input2 = null; 
             double result;
             System.out.println("PLease enter your input sir:");
             input1 = inputSource.nextLine();
             System.out.println("PLease enter your input sir:");
             input2 = inputSource.nextLine();
             double value1 = Double.parseDouble(input1);
             double value2 = Double.parseDouble(input2);
             result = value1 + value2;
             System.out.println("The Sum of " + input1 + " and " + input2 + " is " + result);

     }
}

“扫描器不会记住以前输入的整数”
--扫描器不应该记住任何东西。当第二个输入是整数时,它将抛出异常并等待您输入两个双精度。等待输入不是“挂起”。@azurfrog你说得对,我刚刚测试过。但如何将之前输入的整数作为双精度?示例:如果我输入7和8.5,如果用户写入字符串或浮点值会怎么样?您将如何从捕获本身等捕获异常?为什么不能假定输入的两个输入都是双倍的?谢谢,伙计!这很有帮助。我也尝试过这种方法,但我遇到了一个错误,input1没有初始化,我不知道如何解决。我是一名C++er,刚开始学习java,所以对它了解不多。无论如何,再次感谢。我知道,java很酷,C++不是那么容易,但是它的高收益和非常受欢迎,因为它的兼容性。如果你知道C++,我敢肯定,你可以很快选择任何语言。您不必在Java中处理任何内存管理、垃圾收集、指针等。所有最棒的家伙:)嗨,法鲁克·汗,我注意到这个问题标记为重复。请接受这个答案,因为你说它有效。这样这个话题就可以结束了。谢谢