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中处理任何内存管理、垃圾收集、指针等。所有最棒的家伙:)嗨,法鲁克·汗,我注意到这个问题标记为重复。请接受这个答案,因为你说它有效。这样这个话题就可以结束了。谢谢