【发布时间】:2018-11-19 22:27:21
【问题描述】:
我的代码是在罗马等价物中转换一些整数。说整数 5 是罗马等价的“V”等等。我正在使用开关盒进行转换。但是它会抛出一个错误,即作为字符串类型变量的变量符号,这是未定义的。我在代码的顶部声明了这个变量。
换算表是这样的:
Symbol Value
I 1
V 5
X 10
L 50
C 100
D 500
M 1000
import java.util.Scanner;
//Integer to Roman Conversion
public class integer_roman {
public static void main(String args[]){
Scanner in= new Scanner(System.in);
System.out.println("Enter the Integer number");
int number= in.nextInt();
String symbol;
switch (number){
case 1:
symbol="I";
break;
case 5:
symbol="V";
break;
case 10:
symbol="X";
break;
case 50:
symbol="L";
break;
case 100:
symbol="C";
break;
case 500:
symbol="D";
break;
case 1000:
symbol="M";
break;
}
System.out.println(symbol);
}
}
错误: 错误:(34, 28) java: 变量符号可能没有被初始化
我无法找出问题所在。如果有人有任何想法,请分享。
【问题讨论】:
-
编译器不能保证
symbol在被使用时已经被赋值。局部变量没有分配默认值,因此它们是“未定义的”。定义局部变量时为其分配“默认值” -
“未初始化”!=“未定义”! “未初始化”意味着它没有(初始)值; “未定义”表示未定义或声明。由于您的开关中没有
default,因此变量可能会在没有任何值的情况下结束 -> 错误未初始化。switch可能不是最适合您的情况(假设这里有一些东西)
标签: java string switch-statement java.util.scanner