如何解决为什么在使用 selectionSort 时我的论点不起作用? T 有问题,但我无法解决它
使用 Java,有人告诉我从教科书中复制 selectionSort 方法并使用它。在使用它时,我在程序中遇到问题,告诉我我的参数 selectionSort(int [],int) 不兼容,但我认为 T 应该是许多不同的参数。为什么这不起作用? (PS忽略对用户输入的请求,这是我添加到作业中的一点额外工作,如果我可以使该方法工作,我可以添加用户输入)(双重PS,我做了另一个方法,printArray来除尘Array蜘蛛网,但没有将方法附加到下面的代码中)。
我从 Eclipse 收到以下消息:方法 selectionSort(T[],int) 在类型 Program15_4 中不是 适用于参数 (int[],int)
我在终止程序时收到以下错误消息:线程“main”中的异常 java.lang.Error:未解决的编译问题: 对于类型 Program15_4
未定义方法 selectionSort(int[],int)at Program15_4.main(Program15_4.java:25)
import java.util.*;
public class Program15_4 {
public static void main(String[] args) {
Scanner in = new Scanner(system.in);
int[] input = new int[10];
System.out.println("Please enter 10 numbers");
for (int index = 0; index < input.length; index++) {
input[index] = in.nextInt();
}
int [] n = { 4,8,12,14,20,24 };
System.out.println(selectionSort(n,n.length));
printArray(input);
}
//enter code here
public static <T extends Comparable <? super T>>
void selectionSort(T[] a,int n)
{
for (int index = 0; index <n -1; index++)
{
int indexOfNextSmallest = getIndexOfSmallest (a,index,n-1);
swap (a,indexOfNextSmallest);
}
}
private static <T extends Comparable<? super T>>
int getIndexOfSmallest(T[] a,int first,int last)
{
T min = a[first];
int indexOfMin = first;
for (int index = first +1; index <= last; index++)
{
if (a[index].compareto(min) < 0)
{
min = a[index];
indexOfMin = index;
}
}
return indexOfMin;
}
private static void swap(Object [] a,int i,int j)
{
Object temp = a[i];
a[i] = a[j];
a[j] = temp;
}
public class Program15_4 {
public static void main(String[] args) {
Integer [] n = { 20,24,2,21 };
selectionSort(n,n.length);
System.out.println(Arrays.toString(n));
}
解决方法
一些建议:
-
将数组
n
声明为Integer
数组,而不是int
。在 Java 中,int
是原始类型,不能用于像T
这样的泛型类型变量。另外,不要按排序顺序初始化数组中的数字,因为您要测试排序代码是否有效。所以,你可以像这样声明你的数组:Integer[] n = { 20,14,12,24,2,8,4 };
-
您的
selectionSort
函数为空,这意味着它不返回任何内容。因此,您不能使用System.out.println
打印其返回值,因为它没有返回值。所以,只需调用函数:selectionSort(n,n.length);
-
您可以使用
Arrays.toString
方法打印数组,如下所示:System.out.println(Arrays.toString(n));
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。