java初心者です。eclispeを使用しています。 ファイルから読み込んだ数字を挿入ソートで並び替えるプログラムを 作成していますがうまくできません。 どのように書き換えればよいか教えていただきたいです。 追記:回答、修正などいろいろなご指摘本当にありがとうございます。 下記のように書き換えるとエラーがでました・・・ どこがいけないのでしょうか? ```###エラーコード Exception in thread "main" java.lang.NumberFormatException: For input string: "1,3,4,6,2,7,5" at java.lang.NumberFormatException.forInputString(Unknown Source) at java.lang.Integer.parseInt(Unknown Source) at java.lang.Integer.parseInt(Unknown Source) at Insert.test.main(test.java:11) ```java package Insert; public class test { public static void main(String[] args) { String fn ="c:\InputData.txt"; String ret[] =FRead.getLines(fn); int[] data =new int[fn.length()]; for(int i=0 ; i <ret.length; i++){ data[i]= Integer.parseInt(ret[i]); } for(int i=0; i < data.length; i++) { int tmp =data[i]; int j =i-1; while (j>0 && tmp < data[j]){ data[j+1] = data[j]; j--; } data[j+1] = tmp; } for(int i=0; i < data.length; i++) { System.out.println(data[i]+ " "); } } }
java
1package Insert; 2import java.io.IOException; 3import java.io.FileInputStream; 4import java.io.InputStreamReader; 5import java.io.BufferedReader; 6import java.util.ArrayList; 7 8public class FRead { 9 10 public static String[] getLines(String fileName) { 11 ArrayList list =new ArrayList(); 12 try{ 13 BufferedReader br = new BufferedReader 14 (new InputStreamReader(new FileInputStream(fileName))); 15 String line = null; 16 17 while ((line = br.readLine()) !=null){ 18 list.add(line); 19 } 20 br.close(); 21 } catch(IOException err) { 22 } 23 return (String[]) list.toArray(new String[list.size()]); 24 25} 26 } 27
まずはデータが2個の場合について、自分がjavaになったつもりで実行を追ってみてはどうですか?なんかあまり考えずにテキトーに書いたコードに見えます。
プログラムコード(およびエラーメッセージ)は質問内容としては最も重要な部分であるため、見やすくしていただけると助かります。<code>ボタン押下→「コード」部分にコードを貼り付け→「ここに言語を入力」に対象言語名記入(エラーメッセージの場合は不要)の手順で「コードハイライト化」してください。(質問編集画面ではリアルタイムでプレビューが表示されるので見ながら調整してください)
質問編集画面タイトル横にある「初心者アイコン」をご活用ください。「初心者」と質問で書くよりも伝わりますし、質問一覧に表示されるのでわかりやすくなります。
ご指摘ありがとうございます。
FRead.getLinesってなんですか?
FReadクラスで読み取った文字を配列にするために使ってます。(調べてて見つけたのを使いました。)
回答3件
あなたの回答
tips
プレビュー