[英]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.