我一直在尝试创建一个搜索未排序整数数组的方法,但我遇到了一些我无法解决的问题。我想允许程序的用户输入一个整数值,并让程序返回大于搜索到的整数值的数字量。我似乎遇到的问题是处理main方法中的变量,使用scanner进行搜索,以及如何修复我的循环以进行此运行。
我真的很感激帮助!
我的代码:
y = sin(x)
答案 0 :(得分:2)
我必须重写你的arrayIndex方法。从该方法中的用户输入,或者您可以将输入传递给arrayIndex方法。
只计算大于输入的数字,然后返回结果。
public static int arrayIndex(int[] a) {
Scanner user_input = new Scanner( System.in );
System.out.println("Enter a value to search: ");
int userSearch = user_input.nextInt();
int numberOfCount = 0;
for(int i = 0; i < a.length; i++) {
if(a[i] > userSearch) {
++numberOfCount;
}
}
return numberOfCount;
}
答案 1 :(得分:2)
这实际上非常简单。我会解释一下。
public static int arrayIndex(int userSearch, int[] a) {
Scanner user_input = new Scanner( System.in );
int count = 0;//this will track your data
System.out.println("Enter a value to search: ");
userSearch = user_input.nextInt(); // Use nextInt()
for(int i = 0; i < a.length; i++) {
if(a[i] > userSearch) {
count++;//increments when the if statement is true
}
}
return count;//returns your desired data
}
答案 2 :(得分:0)
您可以将调用更改为arrayIndex:
int search = arrayIndex( tmax); // no need to pass userSearch:
以下是使用扫描仪读取整数的方法:
Scanner scanner = new Scanner(System.in);
int userSearch = scanner.nextInt();
但等等:还有更多。如果您使用java 8流,您的代码可以清理一下:
// Returns the maximum value in the array
public static int arrayMax(int[] a) {
return Arrays.stream(a).max().getAsInt();
}
// Returns the minimum value in the array
public static int arrayMin (int[] a) {
return Arrays.stream(a).min().getAsInt();
}
public static double arrayAverage(int[] a) {
return Arrays.stream(a).average().getAsDouble();
}
public static long arrayIndex( int[] a) {
System.out.println("Enter a value to search: ");
Scanner scanner = new Scanner(System.in);
int userSearch = scanner.nextInt();
return Arrays.stream(a).filter(n -> n > userSearch).count();
}
看看并享受!