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)
というエラーが発生してしまいました。
ソートの部分で問題が起きているらしいのですが、自分では考えが凝り固まってしまい間違いが発見出来ません。
どなたか原因を教えて頂けないでしょうか、よろしくお願いします。
No.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>とか。(同じ物が複数入力した時の処理は頑張れ)
*/
ぬああああ、ありがとうございます。
配列の0飛ばしは初歩中の初歩の間違いでした、何で気付けなかったんだろう・・・
濁点の方もまた盲点でした。こちらも色々試行してみようと思います。
重ね重ねありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Java java 入力 3 4 3 出力 ABC DEFG HIJ このようなプログラムの書き方を教えてくだ 2 2022/07/15 14:18
- Ruby 【JAVA】数字をひし形に出力するプログラムについて 2 2022/07/11 23:32
- Java Java プログラム public class Main { public static void 3 2023/08/10 23:46
- Java javaでのプログラム(配列)について質問です. 2 2022/10/14 22:27
- Java Java 配列<選挙> 4 2023/07/31 15:07
- Java 直し方について教えて頂きたいです。 4 2022/08/13 02:11
- Ruby vscode 文字化け 1 2022/05/21 19:17
- Java Javaの問題なのですが、「3文字以上の英数字文字列を入力し、文字列の中に文字(9)が出てくるまでの 1 2023/06/06 18:55
- C言語・C++・C# C言語プログラム変更 2 2022/12/21 15:03
- Java java 飾子を付けること(public static・・・) ・コンソールへの出力処理はmainメ 2 2022/06/16 19:34
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ループ処理の際、最後だけ","を...
-
テキストボックスに入力された...
-
論理演算子”||”またはの入力方法
-
Loop後に変数が出力できないです
-
基数変換プログラム
-
javaプログラムについて
-
Java、2の0乗~10乗の表示
-
繰り返しによる星印の出力
-
for文を使った累乗の計算方法に...
-
Randomメソッドの確率設定
-
数値⇒漢数字変換 java
-
Java 配列<選挙>
-
Ctrl+Zが入力されると終了する...
-
java キーボード入力された値の...
-
階乗の式
-
VBAで配列の計算
-
配列にnullを代入すると、null...
-
配列をセッションに割り当てた後で
-
1~100までの数字を表示し、か...
-
Log4jで機能毎に別ファイルへ出...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ループ処理の際、最後だけ","を...
-
java キーボード入力された値の...
-
Java、2の0乗~10乗の表示
-
数値⇒漢数字変換 java
-
論理演算子”||”またはの入力方法
-
コマンドライン引数の例外処理...
-
JAVAのfor文で困っています。
-
続・ZZZ,ZZZ,ZZ9形式の金額形式...
-
Java 入力した整数値の合計を、...
-
7つ数字を表示したら改行すると...
-
テキストボックスに入力された...
-
countに実行した回数をいれたい...
-
総称型ArrayList<E>への参照...
-
Randomメソッドの確率設定
-
Ctrl+Zが入力されると終了する...
-
学校で課題を出されて困ってい...
-
Java キーボードから負の数が入...
-
キーボードから10人分の点数を...
-
階乗の式
-
Java 配列<選挙>
おすすめ情報