文字列の配列をアルファベット順に整理する必要があります。理論的には、各単語の最初の文字は大文字になります (ただし、ユーザーを常に信頼できるとは限らないため、必ずしもそうとは限りません)。試してみArrays.sort()
ましたが、プログラムを実行できません。を使用してみcompareTo()
ましたが、プログラムの実行中にコードのそのセクションに到達すると、次のエラーが発生します。
Exception in thread "main" java.lang.NullPointerException
at java.lang.String.compareTo(Unknown Source)
at NameandAge.printNameOrder(NameandAge.java:431)
at NameandAge.print(NameandAge.java:350)
at NameandAge.main(NameandAge.java:116)
文字通り、この件に関して私が見つけることができるものはすべて、これら 2 つの解決策のいずれかを提供してくれます。他の提案はありますか?
(記録のために、コードは現在読み取ります: )
while(!done)
{
done=true;
for(int i=0;i<organizedNames.length-1;i++)
{
if(!(organizednames[i]==null))
{
String name1=organizedNames[i]; String name2=organizedNames[i+1];
if(name1!=null&&name2!=null)
{
int num=name1.compareTo(name2);
if(num>0)
{
temp=organizedNames[i]; //temp is a String that was declared earlier
organizedNames[i]=organizedNames[i+1];
organizedNames[i+1]=temp;
done=false
}
}
}
}
}
編集: name1 と name2 ではないことを確認するためにチェックを試みましたnull
。これで動作しますが、出力は次のとおりです。 Joe
Bill
Bob
Smith
Rodney
James
Philip
Lillian
Charlie
Angel
Carol
Noah
今、コードのセクション全体を追加しました (もちろん、while ループを除いて)。これは基本的に私が見つけた正確な解決策であり、出力を提供する最初の解決策です。私は何を間違っていますか?
編集 (再度): これは、並べ替えを呼び出すコードです。
String[]organizedNames=new String[names.length];
organizedNames=sortNames(organizedNames);
そして、ソート自体のコードは、基本的に以下の回答にあるものです。