0

我收到来自我的编译器的错误。有人有任何线索吗?

import java.util.Scanner;

public class mathProg {

public static void main (String[] args) {

Scanner keyboard = new Scanner(System.in);

int num1, num2, numsum, numdif, numpro, numquo, numexp, cFunction;
String userName; 
String functionName;

System.out.println("Welcome to the calculator!");
System.out.println("What is your name?");
userName = keyboard.nextLine();

System.out.println("Hello, " + userName + "! How can I help you?");
System.out.println("Operable commands are '1' (add), '2' (subtract), ");
System.out.println("'3' (multiply), '4' (divide), and '5' (exponent).");
cFunction = keyboard.nextInt();

switch(cFunction) {
  
  case 1:
    functionName = "addition";
    break;
  case 2:
    functionName = "subtraction";
    break;
  case 3:
    functionName = "multiplication";
    break;
  case 4:
    functionName = "division";
    break;
  case 5:
    functionName = "exponent";
    break;
  default:
    System.out.println("Invalid command.");
    
    
};

System.out.println("You selected " + functionName + ". What number would you like to start with?");

};

};

错误是这样的:

发现 1 个错误:

文件:/Volumes/USB20FD/Computer Science/Java/Labs/mathProg/mathProg.java [行:45]

错误:局部变量 functionName 可能尚未初始化

我使用 DrJava 作为我的 IDE,以及 Eclipse 0.A48 编译器。这是一个快速课堂实验室,所以所有的帮助将不胜感激!

4

3 回答 3

0

将 functionName 设置为空字符串:

String functionName = "";

如果达到默认情况,functionName将永远没有机会获得价值。

于 2013-12-11T23:24:55.420 回答
0

改变

String functionName;

String functionName = null;
于 2013-12-11T23:24:55.927 回答
0

在这种default情况下,functionName没有初始化,但必须在第一次使用它之前进行初始化。编译器必须确保所有执行路径中的所有局部变量在使用前都已初始化。

要么将它初始化为 之前的东西,要么在 caseswitch中初始化它,或者在defaultcase 中抛出 an 。Exceptiondefault

于 2013-12-11T23:24:58.300 回答