1つのJavaプログラムで少し問題があります。 InsertionSortアルゴリズムを実行しようとしていますが、プログラムがstdin経由で取得する文字列を変換する際に問題があるようです。これは、いくつかの数字で働いているプログラムのように思えるが、それはこれらの数字では動作しません:それはなく、それは私のファイルと、いくつかの数字で動作します数値のように見える文字列のNumberFormatException
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) + " ");
}
}
}
:これは私のアルゴリズムである https://dl.dropboxusercontent.com/u/57540732/numbers.txt
あなたに提供されます。私は次の例外を受け取ります:
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
私は問題がnextLIne() –
Scannerクラスは、nextInt()とhasNextInt(というメソッドを持っている)であると思います。おそらく、文字列を整数に解析する代わりに、それらを使ってみるべきでしょう。 – abekenza