gpt4 book ai didi

java - 多态排序转换

转载 作者:行者123 更新时间:2023-12-01 15:01:05 25 4
gpt4 key购买 nike

我不知道如何纠正该程序。我尝试将 Sorting.java 程序更改为 public static void SelectionSort (int[] intList),但这似乎并不能解决问题。有人可以帮忙吗?

文件 Sorting.java 包含 Sorting 类。此类实现了选择排序和插入排序算法,用于按升序对任何 Comparable 对象数组进行排序。在本练习中,您将使用 Sorting 类对几种不同类型的对象进行排序。

  1. 文件 Numbers.java 读取整数数组,调用选择排序算法对它们进行排序,然后打印排序后的数组。将 Sorting.java 和 Numbers.java 保存到您的目录中。 Numbers.java 不会以其当前形式进行编译。研究一下,看看你是否能找出原因。

  2. 尝试编译 Numbers.java 并查看错误消息是什么。 **问题涉及到原始数据和对象之间的区别。更改程序,使其正常工作(注意:您不需要进行太多更改 - Java 1.5 的自动装箱功能将处理从 int 到 Integer 的大多数转换)。

代码如下:-

// Demonstrates the selection sort and insertion sort algorithms.
public class Sorting {
// Sorts the specified array of objects using the selection
// sort algorithm.

public static void selectionSort (Comparable[] list) {
int min;
Comparable temp;
for (int index = 0; index < list.length-1; index++) {
min = index;
for (int scan = index+1; scan < list.length; scan++)
if (list[scan].compareTo(list[min]) < 0)
min = scan;

// Swap the values
temp = list[min];

list[min] = list[index];
list[index] = temp;
}
}

// Sorts the specified array of objects using the insertion
// sort algorithm.
public static void insertionSort (Comparable[] list) {
for (int index = 1; index < list.length; index++) {
Comparable key = list[index];
int position = index;

// Shift larger values to the right
while (position > 0 && key.compareTo(list[position-1]) < 0) {
list[position] = list[position-1];
position--;
}

list[position] = key;
}
}
}

// Numbers.java
// Demonstrates selectionSort on an array of integers.
import java.util.Scanner;

public class Numbers {

// Reads in an array of integers, sorts them,
// then prints them in sorted order.
public static void main (String[] args) {
int[] intList;
int size;
Scanner scan = new Scanner(System.in);
System.out.print ("\nHow many integers do you want to sort? ");

size = scan.nextInt();
intList = new int[size];

System.out.println ("\nEnter the numbers...");
for (int i = 0; i < size; i++)
intList[i] = scan.nextInt();

Sorting.selectionSort(intList);

System.out.println ("\nYour numbers in sorted order...");
for (int i = 0; i < size; i++)
System.out.print(intList[i] + " ");

System.out.println ();
}
}

最佳答案

在您的排序类 selectionSort(Comparable[] list) 方法中,需要 Comparable 数组。

但是您正在发送 int[],而不是 int[],您可以发送 Integer[]

main 方法中声明数组,如下所示,它将正常工作。

Integer[] intList;

用下面的代码替换您的主要方法。

public static void main(String[] args)

{

Integer[] intList;

int size;

Scanner scan = new Scanner(System.in);

System.out.print("\nHow many integers do you want to sort? ");

size = scan.nextInt();

intList = new Integer[size];

System.out.println("\nEnter the numbers...");

for (int i = 0; i < size; i++)

intList[i] = scan.nextInt();

Sorting.selectionSort(intList);

System.out.println("\nYour numbers in sorted order...");

for (int i = 0; i < size; i++)

System.out.print(intList[i] + " ");

System.out.println();

}

仅供引用

虽然 int 会自动装箱为 Integer,但 int[] 不会自动装箱为 Integer[]

数组没有装箱,只是类型本身。

请参阅:How to convert int[] into List<Integer> in Java?

在java中

关于java - 多态排序转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13639458/

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