【问题标题】:Java incompatible types errorJava 不兼容类型错误
【发布时间】:2014-12-12 20:54:35
【问题描述】:
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();
    }
}

//首先的代码。

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;
        }
    }
}

我不确定为什么这段代码不起作用。这可能很简单,但我不确定。 这里是程序的运行。

运行:

你要排序多少个整数? 1

输入数字... 12

线程“main”中的异常 java.lang.RuntimeException:无法编译的源代码 - 错误的 sym 类型:Sorting.selectionSort 在 Numbers.main(Numbers.java:29) Java 结果:1

【问题讨论】:

  • 它在顶部代码的 intList 上给了我错误。
  • 使用调试器即可。
  • @Garret,用确切的错误信息编辑您的帖子。
  • 这段代码不起作用是什么意思:它不编译,不运行,运行但RuntimeException 引发,运行但给出意外输出...?
  • 你知道你的错误在哪一行吗?

标签: java type-conversion


【解决方案1】:

您正在尝试将int[] 转换为Comparable[]。通常对象引用类型是允许扩大转换的,但是int[]是一个原始类型的数组,所以转换失败并产生编译错误。

尝试使用int[] 作为selectionSort 的参数。或者您可以使用Integer[] 来表示intList 的类型。

【讨论】:

  • 欢迎享受 Java 被破坏的类型变异带来的乐趣。
  • @KenoguLabz 这不是 Java 的代理类型差异。原始类型和引用类型不同。
  • 是的。那是它自己的单独问题。但是,写入协变数组存在问题。可取之处在于,写入的值总是首先从数组中提取。
  • Integer[] intList;intList = new Integer[size];,或 public static void selectionSort(int[] list) {
  • 现在我必须复制该代码并使其以字符串而不是整数形式读取。你知道我该怎么做吗?我不断收到此错误:
猜你喜欢
  • 2013-09-23
  • 2016-09-11
  • 2013-10-29
  • 2011-08-26
  • 1970-01-01
  • 2014-03-29
  • 1970-01-01
  • 1970-01-01
  • 2011-04-18
相关资源
最近更新 更多