【问题标题】:I get an error in the while loop我在 while 循环中遇到错误
【发布时间】:2015-07-12 14:42:09
【问题描述】:

我有一些代码不起作用,我在错误处放置了一个箭头。

我想创建一个 ~loop while (j > 0) AND (array at j-1 > Min)`。

我做错了什么?为什么我不断收到错误?

请帮忙!并感谢您的阅读!这可能只是一个简单的愚蠢错误。它告诉我一个是 int,另一个是 boolean,我该怎么办?

private static int[] dorp(int[] myArray){
    int n = myArray.length;
    int swap;
     for(int i = n-1; i >= 0; i--){
        int j = i;
        int min = myArray[i];
      -->  while ((j = 0) && (myArray[j-1] > min)) {
        myArray[j]=myArray[j-1];
        j=j-1;
            }
        j=min;
        }
    return myArray;
}

新代码

    int myArray[] = {1, 6, -1, 7, 83, 19, -3, 6, 2, 4, 6, 32, 66, -9};
    int n = myArray.length;
    myArray = doop(myArray);
    for (int i = 0; i < n; i++) {
        System.out.println(myArray[i]);
    }
}

private static int[] doop(int[] myArray) {
    int n = myArray.length;
    int swap;
    for (int i = n - 1; i >= 0; i--) {
        int j = i;
        int min = myArray[i];
        while ((j == 0) && (myArray[j - 1] <= min)) {
            myArray[j] = myArray[j - 1];
            j = j - 1;
        }
        myArray[j] = min;
    }
    return myArray;
}

【问题讨论】:

    标签: java while-loop boolean


    【解决方案1】:
    (j = 0) 
    

    结果为 int 和 int &amp;&amp; boolean 不会导致 boolean,如果您打算添加与 0 的比较,则需要它 j==0

    【讨论】:

    • 谢谢伙计,我做到了,我非常感谢,我会把这些知识放在脑海中以备后用,但现在我遇到了错误。异常主线程。你能告诉我有什么问题吗?它应该对所有这些东西进行排序。
    【解决方案2】:

    你的 while 总是假的。 j=0 表示将 0 值分配给 j。你需要这样改变它

     while ((j == 0) && (myArray[j-1] > min)) {
    

    【讨论】:

    • 谢谢你的回答。
    【解决方案3】:

    你不需要返回数组,因为数组是通过引用传递的,所以对 myArray 中元素的任何更改都会在函数之外看到

    你的新doop函数将是

    private static void doop(myArray) {
        int temp,  i, j;                
        for (i = 1; i < myArray.length; i++){
            temp = myArray[ i ];
            //for(j = i - 1; (j >= 0) && (myArray[ j ] < temp); j--) // sort array in descending order
            for(j = i - 1; (j >= 0) && (myArray[ j ] > temp); j--) // sort array in ascending order  
            {
              myArray[ j+1 ] = myArray[ j ];
            }
            myArray[ j+1 ] = temp;    
      }
    
    }
    

    【讨论】:

      猜你喜欢
      • 2015-12-16
      • 1970-01-01
      • 2017-06-17
      • 1970-01-01
      • 1970-01-01
      • 2022-01-03
      • 1970-01-01
      • 2016-02-23
      相关资源
      最近更新 更多