首页 > 解决方案 > Java 变量未定义,但它是在开头定义的

问题描述

我的代码是在罗马等价物中转换一些整数。说整数 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:变量符号可能尚未初始化

我无法弄清楚问题所在。如果有人有任何想法,请分享。

标签: javastringswitch-statementjava.util.scanner

解决方案


首先将消息打印给用户,然后使用Scanner.

其次,添加一个default:初始化的地方symbol,以防用户键入除了 switch 语句中定义的情况之外的其他内容。

public static void main(String args[]){
        System.out.println("Enter the Integer number");
        Scanner in= new Scanner(System.in);

        int number= in.nextInt();
        String symbol = null;
        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;
            default:
                symbol="Uknown number."
        }
        System.out.println(symbol);
    }

推荐阅读