0

这是我的代码:

ArrayFunHouseTwo

public class ArrayFunHouseTwo
{
//goingUp() will return true if all numbers
//in numArray are in increasing order
//[1,2,6,9,23] returns true
//[9, 11, 13, 8]  returns false
public static boolean goingUp(int[] numArray)
{
    int num = 0;
    int numMinus = 0;
    for(int x = 1; x < numArray.length; x++){
        System.out.println(x);
        num = numArray[x];
        numMinus = numArray[x-1];

        if(num > numMinus){
            return true;
        }

    }
    return false;           
}

和相关的跑步者类:

import java.util.Arrays;

public class Lab14b
{
public static void main( String args[] )
{
    int[] one = {1,2,3,4,5,6,7,8,9,10};
    int[] two = {1,2,3,9,11,20,30};
    //add more test cases
    //int[] three = {9,8,7,6,5,4,3,2,0,-2};
    //int[] four = {3,6,9,12,15,18,21,23,19,17,15,13,11,10,9,6,3,2,1,0};

    System.out.println(Arrays.toString(one));
    System.out.println("is going Up ?  " + ArrayFunHouseTwo.goingUp(one));
    System.out.println(Arrays.toString(two));
    System.out.println("is going Up ?  " + ArrayFunHouseTwo.goingUp(two));
    //add more test cases
    //System.out.println(Arrays.toString(three));
    //System.out.println("is going Up ?  " + ArrayFunHouseTwo.goingUp(three));
    //System.out.println(Arrays.toString(four));
    //System.out.println("is going Up ?  " + ArrayFunHouseTwo.goingUp(four));

我希望它打印出来,从而证明它正在读取整个数组,但它读取的唯一数组是第三个数组,它将打印位置 x 处的所有值或 x 的值,具体取决于我如何对println()语句进行编码

4

2 回答 2

4
if(num > numMinus){
    return true;
}

这意味着一旦您找到一个大于其先前数字的数字,它将终止循环。你现在想要做的是这样的事情。

...
    if(num <= numMinus){
        return false;
    }
}
return true;
}

编辑:将条件修复为<=基本上检查连续数字,如果数字相等或减少,则将标志设置为 false(实际上此时您可以返回 false)

于 2012-12-14T02:20:38.187 回答
0

好的,你有几个问题。

以 x=0 开始你的 for 循环。Java 中的所有数组都从 0 开始并运行到数组 length-1,这意味着您的 x < numArray.length 是正确的(如果您不遵循这一点,请仔细考虑)。

System.out.println(x); 将打印出 x 的值,这只是你的计数器。

System.out.println(numArray[x]); 将在 x 值处打印出数组的内容(即:从 0 开始到最后一个长度为 1)

numMinus = numArray[x-1]; 将给您带来问题,因为您无法查看 -1 索引。而是将 x 处的值与 x+1 处的值进行比较。即: (numArray[x] < numArray[x+1]) 应该返回 true 因为您正在查看 numArray[x+1],请将 for 循环中的条件更改为 x < numArray.length-1,否则您将结束向上查看数组末尾时会产生错误。

目前,您正在返回第一次比较的结果,因为 return 会破坏您的循环,我很确定您仅在检查所有值之后才想要结果,至少在您得到 false 或用完值之前。

在此函数中创建一个布尔值,并使用它来跟踪每对是否为真。如果该值变为 false,则返回它。否则在函数末尾返回(它只能是真的)值。

不知道我是否遇到了所有问题,但如果解决这些问题,您就会顺利进行。

于 2012-12-14T02:46:15.073 回答