为什么会出现此“无法到达的语句”错误?

NEPat10

我正在将罗马数字输入转换为它的整数值。在我的convertChar方法中,每当我向代码中添加break语句时,我都会不断收到错误消息,指出这是一条无法访问的语句。我不知道为什么会这样。我是新来的学生,我一定做错了什么,我希望有人可以告诉我我做错了什么以及如何解决。它一定与我正确设置方法的方式有关吗?我仍然对要输入的变量感到困惑,所以也许我搞砸了,但是我没有足够的经验来确切地知道我做错了什么。这是我拥有的一切:

public class RomanNumeralConverter {

public int romanInput() {       
    return convert(getUserInput());
}   

public String getUserInput() {

    Scanner numberInput = new Scanner (System.in);
    System.out.print("Enter a roman numeral in uppercase: ");
    String userInput = numberInput.next();
    numberInput.close();
    return userInput;
}

public int convert (String userInput) {
    int result = 0;
    int subtractamount = 0;
    int x = userInput.length();
    while(x != 0) {
    char romanConvert = userInput.charAt(x);
        if(x >= 1) {
        if(convertChar(romanConvert) >= convertChar(userInput.charAt(x - 1))) {
        subtractamount += convertChar(userInput.charAt(x - 1));
    }
}
    result += convertChar(romanConvert);
    x--;

}
result -= subtractamount;
return result;

}

public static char convertChar(char value) {
    switch (value) {
        case 'I':
            return 1;
            break;
        case 'V':
            return 5;
            break;
        case 'X':
            return 10;
            break;
        case 'L':
            return 50;
            break;
        case 'C':
            return 100;
            break;
        case 'D':
            return 500;
            break;
        case 'M':
            return 1000;
            break;
        default:
            System.out.println("Invalid character!");
            return 0;
            break;
}
    return value;

}

public void printValue() {
    System.out.println(romanInput());
}

public static void main(String[] args) {
    new RomanNumeralConverter().printValue();
}
}
奥斯汀·韦恩利

您的问题出在您的switch语句中。您可以尝试使方法仅返回一次(我认为这是最佳做法),可以最大程度地减少这种情况在其他地方发生

public static char convertChar(char value) {
    char result;
    switch (value) {
        case 'I':
            result = 1;
            break;
        case 'V':
            result = 5;
            break;
        case 'X':
            result = = 10;
            break;
        case 'L':
            result = 50;
            break;
        case 'C':
            result = 100;
            break;
        case 'D':
            result = 500;
            break;
        case 'M':
            result = 1000;
            break;
        default:
            System.out.println("Invalid character!");
            result = 0;
            break;
                   }
        return result
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么在jsp中使用if语句会出现此错误?

OCaml:为什么会出现此错误?

为什么会出现此错误?

为什么Glimpse会出现此错误?

为什么会出现此错误 (NoneType)?

为什么会出现此输入错误?

为什么会出现此分段错误?

为什么在执行此查询时会出现此错误?

为什么会出现此错误:ng:areq错误参数

为什么会出现此错误?提供者无法确定Double值

为什么每隔几次迭代都会出现此错误?“ ActiveX组件无法创建对象”

为什么会出现此错误?“无法在视图目录“ / app / views”中查找视图“索引””

错误:“。class”应该无法找到错误。我检查了许多网站,但无法找到为什么会出现此错误

字符完全加载后,为什么会出现此错误?

为什么会出现此错误“TypeError: undefined is not an object”

为什么会出现此错误?管道不是函数

为什么会出现此错误?(QuantConnect算法)

为什么会出现此“ PulseAudio连接失败”错误?

Stunnel和hpux:为什么会出现此错误?

/ search /处的MultiValueDictKeyError,为什么会出现此错误?

为什么会出现此递归stackoverflow错误?

Shellshock:为什么在测试漏洞时会出现此错误

结构问题,为什么会出现此错误?

为什么 Python 中会出现此 Traceback 错误?

为什么会出现此重复的列错误?

为什么使用Lambda会出现此错误?

为什么我的终端上会出现此错误?

为什么在 IntelliJ 中使用 JavaMail 会出现此错误?

为什么此代码段会出现分段错误?