簡體   English   中英

我的方法怎么了?

[英]What's wrong with my method?

我是Java的新手,所以請原諒我是其中的一部分。 我應該寫一個靜態方法isStrictlyIncreasing(double[] in) ,如果給定數組中的每個值都大於它之前的值,則返回true,否則返回false。 另外,我不能使用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;
        }
    }

不幸的是,我一直得到“ true,true,true ...答案:false”的列表。

我知道我的方法有問題,可能是在if語句中,並且想知道是否有人可以幫助我。

首先,在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。 然后,如果它通過for循環而不被觸發,那么我們知道它們必須按升序排列,因此返回true

您是否只需要檢查之前的值? 不滿足條件時,您將立即返回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;
  }

您不需要雙重循環,因為您只需要檢查連續值。

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;
        }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM