【发布时间】:2015-04-03 17:01:13
【问题描述】:
我必须创建一个数组,其 10 个数字由用户通过扫描仪选择。程序按升序排列 10 个数字,然后打印出新列表。然后它要求用户输入任何数字,然后使用二进制搜索来查看该数字是否在 10 个数字的列表中。
这是我目前所拥有的:
import java.util.Scanner;
public class lab11 {
public static void main(String[] args){
double[] numbers = new double[10];
System.out.println("Please enter 10 double values:");
for (int i=0;i<10;i++){
numbers[i] = inputArray();
}
System.out.println("sorting");
print(selectionSort(numbers));
System.out.println("Please enter a search key:");
}
public static double inputArray(){
Scanner input = new Scanner(System.in);
System.out.print(">");
double d = input.nextInt();
return d;
}
public static double[] selectionSort(double[] list){
double temp;
for(int i=0; i < (list.length-1); i++){
for(int j = i+1; j < list.length; j++){
if(list[j] < list[i]){
temp = list[i];
list[i] = list[j];
list[j] = temp;
}
}
}
return list;
}
public static void print(double[] arr){
for(double d:arr){
System.out.println("list["+j+"]"+" = "+d);
}
}
public static int binarySearch(double[]list, double key){
int low=0,high=list.length -1;
key =input.nextInt();
while(high>=low){
int mid=(low+high)/2;
if(key<list[mid])
high=mid-1;
else if(key==list[mid]) return mid;
else low=mid+1;
}
return-1;
}
}
我在两件事上需要帮助。
(1) 在 Print 方法下。我希望程序像“list [i] = d”一样打印出用户输入的数字d,它工作正常,但i没有。我希望它是 0 到 9 的数组编号。
(2) 我需要有关调用二分搜索的帮助,以便我可以得到搜索的输出。
【问题讨论】:
-
你为什么用
double d = input.nextInt();而不是double d = input.nextDouble();? -
我不是故意的,谢谢
-
你能帮我用二分查找法吗?如何调用该方法?
-
我建议将
double key = input.nextDouble()移动到 main 方法中(当然,您需要事先final Scanner input = new Scanner(System.in);)并通过int position = binarySearch(numbers, key)在 Mark Lee 的答案中调用您的方法或 binarySearch 方法。如何解释position中的值你应该很清楚。 -
我做了所有的更改,我允许我输入一个搜索键,但我没有输出,因为我没有。像这个搜索键不在数组中。我会将 System.out.print(......) 放在哪里。我是放在main方法还是二分查找?
标签: java arrays overloading