2012-12-14 17 views
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
if(num > numMinus){ 
    return true; 
} 

这意味着,只要你找到一个比它以前的数量多一些,就会终止循环。你想在这一点上做的是这样的。

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

编辑:固定的条件<=基本上你检查的连续数字,如果数量相等或降低,您可以设置一个标志设置为false(事实上,在这一点上,你可以返回false)

+0

不,它应该只在数组中的所有数字都增加(或减少,但这是一种不同的方法)时返回true,如果递减为'.goingUp',则返回false;如果它同时发生则返回false(如数组四) –

+0

所以既然我的'.goingDown'方法会相反,我只需要调整适当的值,对吧? –

+0

@ tech_geek23是,只是条件 - 它会是'> ='。我会以某种方式将这两个函数重写为一个,或许将方向(向上或向下)作为参数 –

0

好,你有几个问题。

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

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

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

numMinus = numArray [x-1];会导致你的问题,因为你不能看-1索引。取而代之的是将x的值与x + 1的值进行比较。 ie:(numArray [x] < numArray [x + 1])应该返回true 因为您正在查看numArray [x + 1],请将您在for循环中的条件更改为x < numArray.length-1,否则,您最终会为查看数组的末尾而创建一个错误。

当前你正在返回第一次比较的结果,因为返回会打断你的循环,我敢肯定,只有在检查完所有的值之后,你才需要结果,至少在你得到一个假或值不足的时候。

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

不知道,如果我得到了所有的问题,但解决这些问题,你会很好的方式。

相关问题