2015-11-02 145 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; 
     }