Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/370.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 布尔型方法_Java - Fatal编程技术网

Java 布尔型方法

Java 布尔型方法,java,Java,虽然我已经在“布尔方法”中添加了“return true”和“return false”,但我不断收到错误“add return”。有人知道问题出在哪里吗 问题是:“给定一个可能包含重复项的未排序数组。也给定一个小于数组大小的数字k。如果数组在k距离内包含重复项,则编写一个返回true的函数。” publicstaticvoidmain(字符串[]args){ int[]arr={2,5,7,4,2,7,8,5,4,9}; int k=3; System.out.println(duplicat

虽然我已经在“布尔方法”中添加了“return true”“return false”,但我不断收到错误“add return”。有人知道问题出在哪里吗

问题是:“给定一个可能包含重复项的未排序数组。也给定一个小于数组大小的数字k。如果数组在k距离内包含重复项,则编写一个返回true的函数。”

publicstaticvoidmain(字符串[]args){
int[]arr={2,5,7,4,2,7,8,5,4,9};
int k=3;
System.out.println(duplicateKDistance(arr,k));
}   
公共静态布尔复制距离(int[]数组,int m){

对于(int i=0;i,只有在输入任何循环时才返回值

如果不满足任何循环条件,则永远不会得到
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;
}
公共静态布尔复制距离(int[]数组,int m){

对于(int i=0;i您需要在For循环之外添加返回值。您在整个程序假设您进入循环时的设置方式。如果您从未输入For循环,则程序将永远不会有返回值。因此Java希望您将返回值false放置在第一个For循环之外。您可能应该去掉else返回值false…因为如果if语句不为真,它将始终触发。通过在循环外返回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;   
}
公共静态布尔复制距离(int[]数组,int m){

对于(int i=0;i您需要更改逻辑,请尝试以下代码

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;
    }
publicstaticvoidmain(字符串[]args){
int[]arr={2,5,7,4,2,7,8,5,4,9};
int k=3;
System.out.println(FindZero.duplicateKDistance(arr,k));
}
公共静态布尔复制距离(int[]数组,int m){
布尔标志=假;
for(int i=0;i对于(int j=i+1;j如果
j你的逻辑关闭了,你会想在纸上再次思考方法的逻辑,在纸上走完必要的步骤。你能解释一下你想做什么吗?例如,
m
和数组长度之间有什么联系?如果
array.length,你的方法会返回什么h
为0?@pbabcdefp:这是一个问题:“给定一个可能包含重复项的未排序数组。也给定一个小于数组大小的数字k。如果数组在k距离内包含重复项,则编写一个返回true的函数。”即使这样也不行。如果循环总是在循环的第一圈退出,为什么要使用for循环而不是嵌套for循环呢?在这种情况下,它总是返回“false”@Hengameh:同样,在提交代码之前,你必须仔细考虑你的逻辑。谁会投票给这个答案?发布的代码不可能产生任何有用的东西。你不需要嵌套for循环条件中的
j++
?否则看起来不错。@HovercraftFullOfEels,如果我们添加j++,它将是死代码。它永远不会运行。所以我删除它。另外,感谢您的建议;下次我将:)我没有检查j++问题更多的是对返回类型的评论。它不会起作用,因为j总是会是I+1…j需要是incremented@LeighGriffin-你说得对。我应该添加j++。我不知道为什么一开始java会警告我这是一个死代码!好主意,谢谢:)
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;
    }