你能在if-else语句的条件下使用for循环吗?

时间:2014-03-13 02:47:52

标签: java if-statement for-loop

你能在if-else语句的条件下使用for循环吗?例如,像这样......

if(
        for(q = 0; q < 10; q++){
            values[q]>=values[q+1];
        }          
            )

            {

         done = 0;
    }

这是加载我似乎无法放置的错误。我希望if语句检查int[]我调用values的顺序是从最大到最小,如果是,则将int变量done设置为等于0.

我刚刚开始参加编程课程,我打赌这是一个非常愚蠢的错误,但是我一直试图弄清楚这一点,并且一些帮助绝对是太棒了。

9 个答案:

答案 0 :(得分:3)

您应首先解决您的情况(即按顺序排列您的数组),然后将其输入您的if语句。像这样......

boolean isOrdered = true;

for(q = 0; q < 10; q++){
  if (values[q]>=values[q+1]){
    // in order
    }
  else {
    // not in order
    isOrdered = false;
    break; // we have found a false, so we can quit out of the for loop
    }
  }

if (isOrdered){
  // do something if the array is in order;
  }

答案 1 :(得分:2)

如果将逻辑重构为返回布尔值的方法,则可以执行此操作:

if (isInOrder(values)) {
    //
}

private static boolean isInOrder(int[] array) {
    for (int i = 0; i < array.length - 1; i++)
        if (array[i] > array[i+1])
            return false;
    return true;
}

答案 2 :(得分:1)

for循环可以存在于if块

if (true) {
    for (int i = 0; i < 5; i++) {
        System.out.println("Hello, World!");
    }
}

但for循环可以成为if块的条件

if( for (int i = 0; i < 5; i++) { } ) { }

for循环不是布尔值。每个if条件都需要一个布尔值。

答案 3 :(得分:0)

不,你不能。 if条件必须求值为某个布尔值,而这个for循环不会发生这种情况。

它只能在if语句体中,如

if(someCondition)
    for(int i = 0;i < 10;i++)...

为了实现您的目标,像这样的代码可能有所帮助:

boolean ordered = true;

for(int i = 0;i < array.length - 1;i++) {
    if(array[i] > array[i+1]) {
        ordered = false;
        break;
    }
}

if(ordered) // your if body here

答案 4 :(得分:0)

&#34;内部的表达式,如果&#34;条件应该计算为布尔值或布尔值,否则代码将无法编译。

检查Java规范页面here

答案 5 :(得分:0)

我认为您可能想要备用嵌套,并从done = 0(即列表正确排序)的假设开始,除非您在循环中证明它不是真的。

public class Play{
    public static void main(String[] args) {
        done = 0;
        for(q = 1; q < 10; q++){
            if (values[q-1]<values[q]) {
                  done = 1;
                  break;
             }   

        }          


    }
}

答案 6 :(得分:0)

即可。 If需要布尔测试。 For loop不返回布尔值。您可以将支票分成另一个功能。

if( isArrayOrdered(values) ){
    done = 0;
}

// assuming values is an array of `int` values
private boolean isArrayOrdered( int[] values){
   for(int q = 1; q < values.length; q++){ 

      if( values[q] > values[q-1] ){
         return false;
      }
   }

   return true;
}

答案 7 :(得分:0)

你需要将逻辑分解为步骤。

首先,一个方法

boolean isInOrder (int [] values) {

    for(int q = 0; q < values.length - 1; q++){

        if (values[q] > values[q+1]) {
          return false; 
        }
   }
   return true;
}

//现在让我们调用这个方法

  if (isInOrder (values)) {
     System.out.println ("In Order");
  }
  else {
     System.out.println ("Not In Order");
  }

答案 8 :(得分:0)

不可能把'#34; for循环&#34; if语句和#34;(&#34;和&#34;)&#34;之间的陈述。但是如果你写'&34; for loop&#34;在if语句&#34; {&#34;和&#34;}&#34;。谢谢