1

我正在尝试打印基于 2 个变量的结果。我有一个 8 个元素长的数组...

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

我试过打破多个循环,但是当我运行程序时,有时取决于输入,我会一起打印出“失败者”和“体面”,而我只希望两者中的一个。

  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;

    }
4

3 回答 3

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");
    }
}
于 2013-11-08T13:23:28.917 回答
0

你在这里遇到了一个很大的问题:你想作为一个组“评分”的一组值。

如果任何值 < 40,您想停止查找并打印“失败者”。

如果当前值 >= 40,则需要继续查找,因为下一个值可能 < 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
}
于 2013-11-08T13:29:04.367 回答
0

不要将标签用于控制流。相反,将功能放入单独的方法中。

Java 并不像FortranBasic那样使用,后者使用goto's 移动到程序中的各个点,这通常是在单个范围内编写的。像这样:

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 在设计之初就考虑到了这一点(同时也是一种独立于平台的语言,但这并不完全相同。)

所有这些都是相当学术的,可以很容易地用谷歌找到。

于 2013-11-08T13:17:53.740 回答