如何使用scanner/system.in-Java尚未设置的字符串的值
我正在尝试创建一个计算器。这可能不是最有效的方法,但我希望在我迄今为止所做的事情上得到帮助如何使用scanner/system.in-Java尚未设置的字符串的值,java,Java,我正在尝试创建一个计算器。这可能不是最有效的方法,但我希望在我迄今为止所做的事情上得到帮助 package me.Nelsin.Calculator; import java.text.DecimalFormat; import java.util.Scanner; public class Calculator { public static void main(String args[]) { double answer; //2 num
package me.Nelsin.Calculator;
import java.text.DecimalFormat;
import java.util.Scanner;
public class Calculator {
public static void main(String args[]) {
double answer;
//2 numbers
System.out.println("Enter your first number: ");
Scanner fnumb = new Scanner(System.in);
double fnum = fnumb.nextDouble();
System.out.println("Enter your operation, *, /, +, -: ");
Scanner operation = new Scanner(System.in);
String op = operation.nextLine();
System.out.println("Enter your second number: ");
Scanner snumb = new Scanner(System.in);
double snum = snumb.nextDouble();
//Answers
if(op.equals("*")) {
answer = fnum * snum;
DecimalFormat df = new DecimalFormat("#.##");
System.out.println(df.format(answer));
}
if (op.equals("/")) {
answer = fnum / snum;
DecimalFormat df = new DecimalFormat("#.##");
System.out.println(df.format(answer));
}
if (op.equals("+")) {
answer = fnum + snum;
DecimalFormat df = new DecimalFormat("#.##");
System.out.println(df.format(answer));
}
if (op.equals("-")) {
answer = fnum - snum;
DecimalFormat df = new DecimalFormat("#.##");
System.out.println(df.format(answer));
}
System.out.println("Enter your operation, *, /, +, -: ");
Scanner operation2 = new Scanner(System.in);
String op2 = operation2.nextLine();
System.out.println("Enter your third number here: ");
Scanner tnumb = new Scanner(System.in);
double tnum = tnumb.nextDouble();
if (op2.equals("*")) {
double answer2 = answer * tnum;
DecimalFormat df = new DecimalFormat("#.##");
System.out.println(answer2);
}
}
}
所以我的错误是:
double answer2 = answer * tnum;
我相信这是因为在用户运行程序之前不会设置答案。错误:
The local variable may have not been initialised.
此错误的原因是您在if语句中设置了变量ANSWERT。 要修复错误,请在if条件之后添加else语句,如 或者更简单的解决方案是:
double answer=0;
由于局部变量未初始化,且局部变量没有默认值,因此出现错误。在声明应答变量时为其赋值
double answer = 0.0;
实例变量初始化为null或其默认基本值(如果它们是基本值)
局部变量未定义且未初始化,因此您负责设置初始值
所以改变这个双重答案;加倍回答=0 @EvilCactus如果答案对你有帮助,那就投票吧。如果答案解决了你的问题,那么把它标记为答案。
double answer = 0.0;