我的代码给出了Codeunreachable错误,为什么?

时间:2014-04-12 17:43:13

标签: java

我的代码给出了代码无法访问的错误,我已经注意到了值为
的行 case2C接受了case2C,我不明白为什么? 第一部分工作正常,我接受了三个值,但在第二部分的开始,我从使用中获取了更多3个值,它给出了错误,为什么?

import java.util.Scanner;


class CookieClicker{

        public static void main(String[] args) {

            Scanner scase1C=new Scanner(System.in);
            int testcase1Case=scase1C.nextInt();
            double case1C=scase1C.nextDouble();
            double case1F=scase1C.nextDouble();
            double case1X=scase1C.nextDouble();

            double rem=case1X/2;
            double case1Farm1=case1C/2+case1X/(2+case1F);
            double case1Firstresult;

            while(true){
                if(rem>case1Farm1){

                    rem=case1Farm1;
                    case1Farm1=case1Farm1+case1C/(2+case1F)+case1X/(2+2*case1F);
                    continue;
                }
                else{
                    case1Firstresult=rem;

                }

            }

            double case2C=scase1C.nextDouble();           here the error is coming saying unreachable code,
            double case2F=scase1C.nextDouble();
            double case2X=scase1C.nextDouble();
            double rem2=case2X/2;
            double case2Farm1=case2C/2+case2X/(2+case2F);
            double case2Firstresult;

            while(true){
                if(rem>case2Farm1){                                

                    rem=case2Farm1;
                    case2Farm1=case1Farm1+case2C/(2+case1F)+case1X/(2+2*case1F);
                    continue;
                }
                else{
                    case2Firstresult=rem;

                }

            }
            double case3C=scase1C.nextDouble();
            double case3F=scase1C.nextDouble();
            double case3X=scase1C.nextDouble();
            double rem3=case1X/2;
            double case3Farm1=case3C/2+case1X/(2+case1F);
            double case3Firstresult;

            while(true){
                if(rem>case1Farm1){

                    rem=case1Farm1;
                    case1Farm1=case1Farm1+case3C/(2+case1F)+case1X/(2+2*case1F);
                    continue;
                }
                else{
                    case3Firstresult=rem;

                }

            }

        }
    }

6 个答案:

答案 0 :(得分:0)

虽然(true)导致它永远循环。你使用continue,但这只是结束循环的迭代。即:循环将从nezt迭代开始。

答案 1 :(得分:0)

    while(true){
if(rem>case1Farm1){

    rem=case1Farm1;
    case1Farm1=case1Farm1+case3C/(2+case1F)+case1X/(2+2*case1F);
    continue;
}
else{
    case3Firstresult=rem;

}

添加休息;在case3Firstresult = mem之后,否则循环将永远不会退出。

答案 2 :(得分:0)

while(true){
   if(rem>case1Farm1){
        rem=case1Farm1;
        case1Farm1=case1Farm1+case1C/(2+case1F)+case1X/(2+2*case1F);
        continue;
    }
    else{
        case1Firstresult=rem;
    }
}

while(true)部分导致此问题。将continue替换为break,然后重新考虑代码的设计,并将if语句中的逻辑合并到while循环中。

答案 3 :(得分:0)

您的代码永远不会离开“while(true)”块。您需要使用break来摆脱它。

答案 4 :(得分:0)

你在这些陈述之上有一个while(true)循环。除非在其正文中调用break,否则此循环永远不会退出。因此,永远无法达到以后的陈述。看起来您想在此处调用break语句:

else{
    case1Firstresult=rem;
    break; // add break
}

如果这不是正确的地方,请在其他地方添加break。但你必须在那个循环中有一个。

答案 5 :(得分:0)

这是因为你的

while(true)

除非你突破它,否则会继续持续下去。

相关问题