Java 能否在if-else语句的条件中使用for循环?

Java 能否在if-else语句的条件中使用for循环?,java,if-statement,for-loop,Java,If Statement,For Loop,在if-else语句的条件中是否可以使用for循环?例如,像这样的东西 if( for(q = 0; q < 10; q++){ values[q]>=values[q+1]; } ) { done = 0; } if( 对于(q=0;q=值[q+1]; } ) { 完成=0; } 这是一个加载错误,我似乎无

if-else
语句的条件中是否可以使用for循环?例如,像这样的东西

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

            {

         done = 0;
    }
if(
对于(q=0;q<10;q++){
值[q]>=值[q+1];
}          
)
{
完成=0;
}
这是一个加载错误,我似乎无法定位。我希望if语句检查我调用的
values
int[]
是否按从大到小的顺序排列,如果是,则将
int
变量
done
设置为0


我刚开始上编程课,我打赌这是一个非常愚蠢的错误,但我一直在努力解决这个问题,一些帮助将是非常棒的。

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

它只能在
if
语句体中,如

if(someCondition)
    for(int i = 0;i < 10;i++)...
if(某些条件)
对于(inti=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
boolean ordered=true;
for(int i=0;i数组[i+1]){
有序=假;
打破
}
}
if(ordered)//你的if身体在这里

for循环可以存在于if块内部

if (true) {
    for (int i = 0; i < 5; i++) {
        System.out.println("Hello, World!");
    }
}
if(真){
对于(int i=0;i<5;i++){
System.out.println(“你好,世界!”);
}
}
但是for循环可以而不是作为if块的条件

if( for (int i = 0; i < 5; i++) { } ) { }
if(对于(inti=0;i<5;i++){}
for循环不是布尔值。每个if条件都需要一个布尔值。

if条件内的表达式应计算为布尔值或布尔值,否则代码将无法编译


检查Java规范页面

我认为您可能需要替代嵌套,并从假设
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;
             }   

        }          


    }
}
公共类游戏{
公共静态void main(字符串[]args){
完成=0;
对于(q=1;q<10;q++){

if(values[q-1]您应该首先计算出您的条件(即数组的顺序),然后将其输入到您的
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;
  }
boolean-isOrdered=true;
对于(q=0;q<10;q++){
如果(值[q]>=值[q+1]){
//为了
}
否则{
//不妥
无序=错误;
break;//我们发现了一个false,因此可以退出for循环
}
}
如果(按顺序排列){
//如果阵列处于有序状态,请执行某些操作;
}

No
如果
需要进行布尔测试。
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;
}
if(isArrayOrdered(值)){
完成=0;
}
//假设值是“int”值的数组
私有布尔值isArrayOrdered(int[]值){
对于(intq=1;q值[q-1]){
返回false;
}
}
返回true;
}

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

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;
}
if(isInOrder(值)){
//
}
私有静态布尔ISinoder(int[]数组){
for(int i=0;i数组[i+1])
返回false;
返回true;
}

您需要将逻辑分解为多个步骤

首先是一种方法

boolean isInOrder (int [] values) {

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

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

不可能将“for-loop”语句放在if语句“(“和”)”之间。但如果在if语句“{”和“}”之间编写“for-loop”,则是可能的。谢谢

如果我能让语句返回true,那会解决问题吗?@user3413468你到底想实现什么?你不能在
If
条件下返回true
。好吧,太棒了!这帮了大忙。非常感谢!没问题。如果你喜欢答案,请勾选它让大家知道你的问题lem已被解决。如果他实现了您的代码,他将有更多的问题。@user2310289,例如…?如果所有按顺序排列的值(值[q+1])都可以
如果
for
循环中,会发生什么condition@vikrant
for
循环的条件必须是布尔值。if语句不是布尔值。
  if (isInOrder (values)) {
     System.out.println ("In Order");
  }
  else {
     System.out.println ("Not In Order");
  }