みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

Javaでキーボードから入力された文字列をソートするプログラムについて。

Java初心者です。今回、タイトル通りのプログラムを作成する事になったのですが、

import java.io.*;
import java.util.*;
public class dicsort {
public static void main(String args[]) throws NumberFormatException, IOException{
String[] diclist = new String[4];
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
for(int i=1; i<diclist.length; i++){
System.out.print("ソートしたい単語を入力して下さい。"+i+"語目");
diclist[i] = in.readLine();
}
Arrays.sort(diclist);
System.out.println("答えは");
for(int n=1; n<diclist.length; n++){
System.out.println(diclist[n]);
}
System.out.println("である。");
}
}
というプログラムを実行したところ、

ソートしたい単語を入力して下さい。1語目あさ
ソートしたい単語を入力して下さい。2語目さか
ソートしたい単語を入力して下さい。3語目かさ
Exception in thread "main" java.lang.NullPointerException
at java.util.Arrays.mergeSort(Unknown Source)
at java.util.Arrays.sort(Unknown Source)
at dicsort.main(dicsort.java:11)

というエラーが発生してしまいました。
ソートの部分で問題が起きているらしいのですが、自分では考えが凝り固まってしまい間違いが発見出来ません。
どなたか原因を教えて頂けないでしょうか、よろしくお願いします。

投稿日時 - 2009-10-23 23:53:54

QNo.5391521

すぐに回答ほしいです

質問者が選んだベストアンサー

public class dicsort {
public static void main(String args[]) throws NumberFormatException, IOException{
/* これで使えるのはdiclist[0],diclist[1],diclist[2],diclist[3] の 4つ。*/
String[] diclist = new String[4];
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
/* diclist[0]にもちゃんと値を与えてやる */
for(int i=0; i<diclist.length; i++){
/*
俺の修正に伴い、最初が0語目になるのを修正した。
かつ、俺は数値と文字列を足す、というのが嫌いなので文字列に変換した。
質問者のコードと違い、4つの言葉を入力する。
*/
System.out.print("ソートしたい単語を入力して下さい。"+Integer.toString(i + 1)+"語目");
diclist[i] = in.readLine();
}
Arrays.sort(diclist);
System.out.println("答えは");
for(int n=0; n<diclist.length; n++){
System.out.println(diclist[n]);
}
System.out.println("である。");
}

}

/*
おまけ:
1.濁点や半濁点についても調べてみよう
2.java.util.Dictionary<K,V>とか。(同じ物が複数入力した時の処理は頑張れ)
*/

投稿日時 - 2009-10-24 00:04:25

お礼

ぬああああ、ありがとうございます。
配列の0飛ばしは初歩中の初歩の間違いでした、何で気付けなかったんだろう・・・
濁点の方もまた盲点でした。こちらも色々試行してみようと思います。
重ね重ねありがとうございました。

投稿日時 - 2009-10-24 01:59:13

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)