Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/349.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用scanner/system.in-Java尚未设置的字符串的值_Java - Fatal编程技术网

如何使用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;