【发布时间】:2015-01-19 17:40:29
【问题描述】:
以下代码给出错误消息“线程“主”java.lang.Error 中的异常:未解决的编译问题: 局部变量 answer 可能尚未初始化。
package firstproject;
import java.util.Scanner;
public class calculator {
public static void main(String args[]){
double firstno, secondno, answer;
int choice;
Scanner add = new Scanner(System.in);
System.out.println("What r u trying to do??");
System.out.println("1 - add");
System.out.println("2 - substract");
System.out.println("3 - multiplication");
System.out.println("4 - division");
choice = add.nextInt();
System.out.print("Enter your 1st number: ");
firstno = add.nextDouble();
System.out.print("Enter another number: ");
secondno = add.nextDouble();
if(choice == 1){
answer = firstno + secondno;
}
if(choice == 2){
answer = firstno - secondno;
}
if(choice == 3){
answer = firstno * secondno;
}
if(choice == 4){
answer = firstno / secondno;
}
System.out.println("answer: " + answer);
}
}
所以,我做了这样的事情
package firstproject;
import java.util.Scanner;
public class calculator {
public static void main(String args[]){
double firstno, secondno, answer;
int choice;
Scanner add = new Scanner(System.in);
System.out.println("What r u trying to do??");
System.out.println("1 - add");
System.out.println("2 - substract");
System.out.println("3 - multiplication");
System.out.println("4 - division");
choice = add.nextInt();
System.out.print("Enter your 1st number: ");
firstno = add.nextDouble();
System.out.print("Enter another number: ");
secondno = add.nextDouble();
if(choice == 1){
answer = firstno + secondno;
System.out.println("Answer: " + answer);
}
if(choice == 2){
answer = firstno - secondno;
System.out.println("Answer: " + answer);
}
if(choice == 3){
answer = firstno * secondno;
System.out.println("Answer: " + answer);
}
if(choice == 4){
answer = firstno / secondno;
System.out.println("Answer: " + answer);
}
}
}
成功了。但我想知道为什么我的第一个代码不起作用。
【问题讨论】:
-
因为
answer在方法结束时使用时不保证有值。 -
想想如果
choice是5,当你到达System.out.println("answer: " + answer);时会发生什么。
标签: java