String的NumberFormatException似乎是一个数字

时间:2015-12-19 12:05:36

标签: java sorting exception insertion-sort numberformatexception

我对一个JAVA程序有点问题。 我试图做一个InsertionSort算法,但似乎是转换String程序通过stdin获取的问题。似乎程序只使用少量数字,但它不适用于这些数字: https://dl.dropboxusercontent.com/u/57540732/numbers.txt

这是我的算法:

public class Sort {

    private static ArrayList<String> insertionSort(ArrayList<String> arr) {
        for (int i = 1; i < arr.size(); i++) {
            int valueToSort = Integer.parseInt(arr.get(i).trim());
            int j = i;
            while (j > 0 && Integer.parseInt(arr.get(j - 1).trim()) > valueToSort) {
                arr.set(j, arr.get(j-1));
                j--;
            }
            arr.set(j, Integer.toString(valueToSort));
        }
        return arr;
    }

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        ArrayList<String> al;
        String inputNumbers = sc.nextLine();
        String[] xs = inputNumbers.split(" ");
        al = new ArrayList<String>(Arrays.asList(xs));
        al = insertionSort(al);
        for (int i = 0; i<al.size(); i++) {
            System.out.print(al.get(i) + " ");
        }
    }
}

它适用于少量数字,但不适用于我提供给您的文件。我得到以下例外:

Exception in thread "main" java.lang.NumberFormatException: For input string: "4531"
    at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
    at java.lang.Integer.parseInt(Integer.java:580)
    at java.lang.Integer.parseInt(Integer.java:615)
    at Sort.insertionSort(Sort.java:10)
    at Sort.main(Sort.java:25)

我不知道为什么会出现此异常,因为输入字符串是一个数字(4531)。有什么建议? 我无法将文件中的数字复制并粘贴到终端,因此我使用此命令:

javac Sort.java
java Sort < numbers.txt

0 个答案:

没有答案