Java中的控制流程

时间:2013-11-08 13:12:03

标签: java

我试图根据2个变量打印出结果。我有一个8个元素的数组...

  • 如果该数组中的任何元素小于40,我希望结果是输家。其余条件可以跳过。
  • 如果所有元素都在40以上,那么我想开始检查a的值,它是单独计算的。如果a介于某些值之间,则会打印出结果。

我尝试打破多个循环,但是当我运行程序时,某些时间取决于输入即可获得"失败者"和#34;体面"打印在一起,当我只期待两个中的一个。

  outerloop:
    for (int i = 0; i < array.length; i++)
    {
        if (module[i] < 40 ) 
        {
            System.out.println("Loser");
        } 
        else 
        {
                if (a >= 0 && a < 40) 
                {
                System.out.println("Loser");
                } 
                else if (a >= 40 && a < 60) 
                {
                System.out.println("Decent");
                } 
                else if (a >= 60) 
                {
                System.out.println("Leet");
                }

        }
        break outerloop;

    }

3 个答案:

答案 0 :(得分:2)

您无法轻松地在同一循环中检查它们。我要分手了。在我的头顶:

boolean loser = false;
for (int i = 0; i < array.length && !loser; i++) {
    if (module[i] < 40 || a < 40)  {
        System.out.println("Loser");
        loser = true;
    }
}

if (!loser) {
    if (a >= 40 && a < 60)  {
        System.out.println("Decent");
    }
    else if (a >= 60) {
        System.out.println("Leet");
    }
}

答案 1 :(得分:0)

请勿使用标签进行控制流程。相反,将功能放在一个单独的方法中。

Java并不像FortranBasic那样使用{{3}}来使用goto来移动到程序中的各个点,这通常写在一个范围内。像这样:

function(){

     section1: if(condition) goto section2

     section2: if(condition) goto sectionN
     ....
     sectionN: if(condition) goto section1      
}

Java通常更像

java.exe:Main{

    Class(){
         classRelatedMethod(){
            Class(){ ... // recursive definition }
         }
    }
}

这允许每个class定义彼此耦合的可重用,离散的功能块。如果不是,则应定义新的class。虽然许多其他语言(包括Fortran和BASIC)可以实现这一点,但Java是从头开始设计的(同时也是一种独立于平台的语言,但这不是相当同样的事情。)

所有这些都是非常学术性的,可以很容易地与Google一起找到。

答案 2 :(得分:0)

你在这里遇到了一个很大的问题:你想要作为一个群体“得分”的一系列价值观。

如果有任何值&lt; 40,你想停止寻找并打印'失败者'。

如果当前值>> = 40,则需要继续查看,因为下一个值可能是&lt; 40;

但是,您还想知道阵列中某处是否有'leet'得分。

所以:

boolean loser = false, leet = false;
for( int i = 0; i < array.length; ++i ) {
    if( array[i] < 40 ) {
        loser = true;
        break;
    }
    // if it's not < 40, it must be more
    // now check if it qualifies as leet
    if( array[i] > 60 ) {
        leet = true;
    }
}
if( loser ) {
    print loser
} else if( leet ) {
    print leet
} else {
    print decent
}