簡體   English   中英

布爾類型方法

[英]Boolean Type Method

雖然我已經在“布爾方法”中添加了“ return true”“ return false ,但是我仍然收到錯誤消息“ add return” 有人知道問題出在哪里嗎?

問題是:“給出一個可能包含重復項的未排序數組。還給定一個小於數組大小的數字k。編寫一個函數,如果數組包含k個距離內的重復項,則返回true。”

    public static void main (String[] args){

        int[] arr = {2, 5, 7, 4, 2, 7, 8, 5, 4, 9};
        int k = 3;

        System.out.println(duplicateKDistance(arr, k));

    }   
    public static boolean duplicateKDistance(int[] array, int m){

        for (int i=0; i<array.length; i++){
            for(int j=i+1; j<=m; ){          // if you add "j++", it will be dead code here :)              
                if (array[i] == array[j])
                    return true;
                else 
                    return false;   
            }   
        }   
    }
}

您需要在For循環之外添加返回。 在整個程序假設您進入循環時的設置方式。 如果您從未輸入該For循環,則程序將永遠不會返回。 因此,Java希望您將return false放置在第一個for循環之外。 您可能應該取出else返回false ....,因為如果if語句不為真,它將始終觸發。 通過在循環外使用return false,現在可以捕獲並隱含為什么需要else的邏輯,這是因為您沒有在第二個for循環內進入if語句。

  public static boolean duplicateKDistance(int[] array, int m){

    for (int i=0; i<array.length; i++){
        for(int j=i+1; j<=m; j++){        

            if (array[i] == array[j])
                return true;

        }   
    }
    return false;   
}

您需要更改邏輯,請嘗試以下代碼

public static void main(String[] args) {

        int[] arr = { 2, 5, 7, 4, 2, 7, 8, 5, 4, 9 };
        int k = 3;

        System.out.println(FindZero.duplicateKDistance(arr, k));

    }

    public static boolean duplicateKDistance(int[] array, int m) {

        boolean flag = false;
        for (int i = 0; i < array.length; i++) {
            for (int j = i + 1; j <= m;) { // if you add "j++", it will be dead
                                            // code here :)

                if (array[i] == array[j]) {
                    flag = true;
                    break;
                }
            }
        }
        return flag;
    }

僅當您進入任何循環時才返回一個值。

如果沒有一個循環條件從未被滿足,那么您將永遠不會return語句。 只需在方法末尾添加一個:

public static boolean duplicateKDistance(int[] array, int m){

    for (int i=0; i<array.length; i++){
        for(int j=i+1; j<=m; ){          // if you add "j++", it will be dead code here :)

            if (array[i] == array[j])
                return true;
            else 
                return false;   
        }   
    }
    return false;
}

暫無
暫無

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

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