2015-11-02 94 views
1

我完全新的Java,所以原谅我的一些有关这个白痴。我应该写一个静态方法isStrictlyIncreasing(double[] in)如果给定的数组中的每个值大于该值之前,否则为false返回true。另外,我不能使用java.util.ArrayList我的方法有什么问题?

这里是我的代码:

public static void main(String[] args) { 

    double in[] = new double[]{45, 15, 25, 79, 89, 45, 66, 33, 56, 105}; 
    Sort(in); 
    System.out.println("Answer: " + Sort(in)); 
} 

private static boolean Sort(double[] in) { 
    int n = in.length; 
    int temp = 0;  
    for(int i = 0; i < n; i++){ 
     for(int j = 1; j < (n-i); j++){ 
      if(in[j - 1] < in[j]){ 
       return true; 
      } 
      return false; 
     } 
    } 

不幸的是,我刚收到的“真,真的,真的......答:假”列表

我知道有什么毛病我的方法,可能在if语句中,并想知道是否有人可以帮助我。

+0

你的inner for循环总是只迭代一次。如果'return true'没有,并且因此结束循环,'return false'将始终执行。你想做什么? –

+0

“*不幸的是,我刚得到的名单‘真,真的,真的......答:假’*”那是不可能跟你贴的代码,因为它甚至不会编译因此它不能运行并产生任何结果。请用最小但完整的例子更新您的问题,这将让我们重现您的问题。 – Pshemo

回答

1

难道你只需要之前只检查值?一旦条件不满足,您将返回false。否则它将返回true。

public static void main(String[] args) { 

     double in[] = new double[]{45, 15, 25, 79, 89, 45, 66, 33, 56, 105}; 
     Sort(in); 
     System.out.println("Answer: " + Sort(in)); 
    } 

    private static boolean Sort(double[] in) { 
     int n = in.length; 
     int temp = 0;  
     for(int i = 1; i < n; i++){ 
      if(in[i - 1] < in[i]) 
       return false; 
     } 
     return true; 
    } 
+0

真,感谢@Pshemo –

+0

你说得对......时间去睡觉-_- –

+1

psssstttt:谢谢。无论如何,有人做得正确...... GN! –

3

首先,在Java中,通常使用camelCase方法名称。也就是说,

private static boolean Sort(double[] in) { 

应该成为

private static boolean sort(double[] in) { 

其次,return语句用来从一个方法返回,因此您可能不希望每次检查后返回。相反,你会想这样做的话,

private static boolean Sort(double[] in) { 
    int n = in.length; 
    int temp = 0; 
    for (int i = 0; i < n; i++) { 
     for (int j = 1; j < (n - i); j++) { 
      if (in[j - 1] > in[j]) { 
       return false; 
      } 
     } 
    } 
    return true; 
} 

这将完成是返回false,如果序列中的下一个数字是不是比以前的值。然后如果它使通过对于没有触发循环,那么我们就知道,他们必须按升序排列,因此返回true

1

你不需要一个双循环,因为你只检查连续值。

private static boolean Sort(double[] in) { 
     int n = in.length; 

     for(int i = 1; i < n-1; i++){ 
       if(in[i - 1] < in[i]){ 
        return true; 
       } 

      } 
     return false; 
     }