[英]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.