簡體   English   中英

如何使用Scanner / System.in中尚未設置的字符串的值-Java

[英]How to use the value of a string that is yet to be set by scanner/system.in - 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 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語句中設置了變量“ answer”。 修復錯誤,在條件如if后面添加else語句

...

else{
answer=0.0;
}

或更簡單的解決方案是說:

double answer=0;

因為尚未初始化局部變量局部變量沒有默認值,您會得到錯誤。 聲明變量時將其賦值。

double answer = 0.0;

Instance variables被初始化為null或為其默認的原始值(如果它們是原始值)。

Local variables未定義且未初始化,因此您有責任設置初始值。

所以改變這個double answer; double answer = 0;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM