gpt4 book ai didi

java - Java 中的方法不返回任何内容

转载 作者:行者123 更新时间:2023-12-02 04:25:56 25 4
gpt4 key购买 nike

我用 Java 编写了一个类,有 5 个方法。线性搜索,如果找到值则返回 true,如果未找到则返回 false。线性搜索 2,如果找到,则返回值的位置。二分查找。它也搜索数组中的值,打印 Int 数组,一次打印 10 个数字,以及选择排序,它对数组进行排序,以便我可以进行二分搜索。一切都编译正常,但由于某种原因,我的方法都没有返回任何内容(除了 void printIntArray 方法)。

编辑:

<小时/>

谢谢,伙计们,我没有意识到我需要这个。出于某种原因,我认为它会自行返回该值......不过,另一个问题。 binarySearch 方法似乎没有执行任何操作。在打印语句“使用二分搜索在随机数组中搜索 11”之后,什么也没有打印。

<小时/>

编辑2:我的binarySearch方法不起作用,因为我不小心为两个else语句设置了mid + 1(else if (key < array[mid]) 应该是mid - 1)。非常感谢大家!我添加了修复程序。

public class sortingSearching {

public static boolean linearSearch (int [] array, int key) {
for (int i = 0; i < array.length; i++) {
if (array [i] == key)
return true;
}// end for
return false;
}

public static int linearSearch2 (int [] array, int key) {
for (int i = 0; i < array.length; i++) {
if (array [i] == key)
return i;
}//end for
return -1;
}//end linearSearch2

public static boolean binarySearch (int [] array, int key) {
int left = 0;
int right = array.length - 1;
int mid = (left + right) /2;
while (left <= right) {
if (array[mid] == key)
return true;
else if ( key < array[mid])
right = mid - 1;
else
left = mid + 1;
mid = (left + right) /2;
} //end while
return false;
}//end binarySearch

public static void printIntArray (int [] array) {
for (int i = 0; i < array.length; i++) {
if (i%10 == 0)
System.out.println();
System.out.print(array[i] + " ");
} // end for
}

public static void selectionSort (int [] array) {
for (int start = 0; start < array.length - 1; start ++) {
int minI = start;
for (int i = start + 1; i < array.length; i++)
if (array[i] < array[start])
minI = i;
int temp = array[start];
array[start] = array[minI];
array[minI] = temp;
}//end for
} //end selectionSort

public static void main (String args []) {
int [] array = new int [20];
for (int i =0; i < array.length; i++)
array[i] = (int)((Math.random() * 100) + 1);

//print the array using printArray
printIntArray(array);
System.out.println();
//use linearSearch to search for 30, 86, and 87
System.out.println("Searching for 30 in the random array. If true is returned, " +
"the value was found. If false was returned, the value was not found.");
System.out.println(linearSearch(array, 30));
System.out.println("Searching for 86 in the random array. If true is returned, " +
"the value was found. If false was returned, the value was not found.");
System.out.println(linearSearch(array, 86));
System.out.println("Searching for 87 in the random array. If true is returned, " +
"the value was found. If false was returned, the value was not found.");
System.out.println(linearSearch(array, 87));
//use linearSearch to locate the first occurrences of 25, 80, and 91
System.out.println("Searching for the location of 25 in the random array. If -1 is " +
"returned, the number was not found in the array.");
System.out.println(linearSearch2(array, 25));
System.out.println("Searching for the location of 80 in the random array. If -1 is " +
"returned, the number was not found in the array.");
System.out.println(linearSearch2(array, 80));
System.out.println("Searching for the location of 91 in the random array. If -1 is " +
"returned, the number was not found in the array.");
System.out.println(linearSearch2(array, 91));
//use selectionSort to sort the array
selectionSort(array);
//use binarySearch to search for 11, 28, 74, and 99
System.out.println("Searching for 11 in the random array using binary search. If true is returned, " +
"the value was found. If false was returned, the value was not found.");
System.out.println(binarySearch (array, 11));
System.out.println("Searching for 28 in the random array using binary search. If true is returned, " +
"the value was found. If false was returned, the value was not found.");
System.out.println(binarySearch (array, 28));
System.out.println("Searching for 74 in the random array using binary search. If true is returned, " +
"the value was found. If false was returned, the value was not found.");
System.out.println(binarySearch (array, 74));
System.out.println("Searching for 99 in the random array using binary search. If true is returned, " +
"the value was found. If false was returned, the value was not found.");
System.out.println(binarySearch (array, 99));
} //end main


} //end sortingSearching

此外,我很抱歉主方法中的所有打印语句都分散了注意力。我考虑过将它们删除以方便阅读,但我希望它与我运行时的完全一样。

最佳答案

linearSearch(array, 30);

他们确实会返回一些东西。但是对返回值做一些事情!

boolean value = linearSearch(array, 30);
System.out.println(value);

或者更简单:

System.out.println(linearSearch(array, 30));

响应您的编辑

您需要向1发起left。您正在执行整数除法,它永远不会达到零。因此,right 卡在 1 上,而 left 始终小于它。

关于java - Java 中的方法不返回任何内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16470042/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com