gpt4 book ai didi

java - 使用 findKth 查找最低、最高、中位数和平均分

转载 作者:行者123 更新时间:2023-11-30 06:52:20 29 4
gpt4 key购买 nike

对于这个计划,我的目标是...使用 findKth 查找最高分、最低分、中位数和平均分用户必须输入数字(输入-1以停止扫描),但他们不知道有多少个以及是否已排序但是,我在尝试执行此操作时遇到了一些问题。

我提供的 findKth 方法仅接受 int[]arr,并且我找不到将数组初始化为本项目所需的特定大小的方法。

有人可以建议一种方法来做到这一点吗?

下面是我的测试方法和我的findKth

import java.util.*;
public class Statistics
{
public static void main(String[]args)
{
System.out.print("Enter Scores, -1 to end: ");

Scanner keyboard= new Scanner(System.in);
String numbers = null;

while(keyboard.nextInt()!=-1)
{
numbers= keyboard.next();
}


String[] parts = numbers.split(" ");
int[] n1 = new int[parts.length];
for(int n = 0; n < parts.length; n++)
{
n1[n] = Integer.parseInt(parts[n]);
}

int highest= n1.length-1;
int lowest=0;
int median= n1.length/2;

QuickSort.findKth(n1, highest);
System.out.println("High: "+n1[highest]);
QuickSort.findKth(n1, lowest);
System.out.println("Low: "+n1[lowest]);
QuickSort.findKth(n1, median);
System.out.println("Median: "+n1[median]);

}
}

public static void findKth(int[] arr, int k)
{
findKth(arr, 0, arr.length, k);
}
//Pre: arr[first]..arr[last-1] contain integers
// k must be in [first..last-1]
//Post: The elements in arr has been rearranged in such a way that arr[k] now contains the kth
// largest element
public static void findKth(int[] arr, int first, int last, int k)
{
int pivotLoc = rearrange(arr, first, last);
if (pivotLoc==k) return;
else if (pivotLoc>k) findKth(arr, first, pivotLoc, k);
else findKth (arr, pivotLoc +1, last, k);
}

我尝试了不同的方法,例如尝试解析字符串中的数字,但是我无法执行此操作,因为当用户输入 -1 时我找不到正确停止扫描仪的方法。

我也尝试过使用 ArrayList,但 findKth 只采用 int[]arr。所以这行不通。

建议?我被难住了。

最佳答案

使用列表收集输入:

List<Integer> input = new ArrayList<>();

input.add(n); // add each number

然后在所有输入后转换为数组:

int[] array = input.stream().mapToInt(Integer::intValue).toArray();
<小时/>

你的输入循环有问题。尽管超出了问题的范围,但尝试一个更简单的循环,例如:

while (true) {
int n = keyboard.nextInt();
if (n == -1)
break;
input.add(n);
}

关于java - 使用 findKth 查找最低、最高、中位数和平均分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42522891/

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