if语句中无法访问的代码

时间:2015-03-15 16:14:22

标签: java

public class Sorting {
String value;
char[] string;
Node nude;
Node current = nude.getNext();

public Sorting(String value) {
    this.value = value;
    string = value.toCharArray();
    token(string);
}

private void token(char[] string) {
    boolean isNumber = false;
    int trueCoefficient;
    int truePower;
    String temp;
    String coefficient = "";
    String power = "";
    int coefficientSignCounter = 0;
    int coefficientSign = 1;
    for (int i = 0; i < string.length; i++) {
        if (string[i] == '+' || string[i] == '-') {
            for (int j = i; true; j++) {
                if (string[j] == 'i')
                    coefficientSign++;
                if (coefficientSignCounter % 2 != 0)
                    coefficientSign = -1;
                if (Character.isDigit(string[j]))
                    i=j-1;
                    break;
            }

        }

        else if(string[i]=='x')
            trueCoefficient=1;

        else if (Character.isDigit(string[i])) {
            for (int j = i; true; j++)
                if (Character.isDigit(string[j]))
                    coefficient = coefficient
                            + Character.toString(string[j]);
            trueCoefficient = Integer.parseInt(coefficient) * coefficientSign;  //Error: Unreachable code
        }

    }
}
}

我还没准备好使用我的代码,但我无法摆脱这个错误。     任何人都可以帮忙吗?     我正在尝试做一个可以读取公式的代码,并使用链表对权力进行排序,如果有人有更多的想法,我会喜欢使用新的想法     谢谢!

2 个答案:

答案 0 :(得分:2)

由于您在循环中声明了elseif,因此无法访问if(condition)条件 但在循环外使用elseif(condition)

应该是这样的

for(int i=0;i<someCondition;i++){//start of Block

   if(condition){

    }
    else if(condition){

   }
}  // End of Loop
-------------------->    you put elseif(condition) after this loop

因此获得Unreachable Code

注意: elseif() 条件应立即跟if子句

您将在另一个位置获得错误

for (int j = i; true; j++)-----> Infinite Loop 
if (Character.isDigit(string[j]))---> So only this will execute
coefficient = coefficient+ Character.toString(string[j]);
trueCoefficient = Integer.parseInt(coefficient) * coefficientSign;  //Error: Unreachable code

由于Infinite Loop Last语句永远不会被执行,这就是为什么编译器会给你无法访问的代码错误

答案 1 :(得分:1)

你没有条件终止你的最后一个for循环。这是无限的。