アプリ版:「スタンプのみでお礼する」機能のリリースについて

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)

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

A 回答 (1件)

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>とか。(同じ物が複数入力した時の処理は頑張れ)
*/
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/10/24 01:59

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!