public static void main(String[] args)
{
String file = "";
Scanner a = null;
try
{
a = new Scanner(new File("names.txt"));
}
catch (FileNotFoundException e)
{
System.out.println("There was an error with your file");
e.printStackTrace();
}
while(a.hasNextLine())
{
file = file +a.nextLine();
file +="\n";
}
System.out.println(file);
String name [] = {file};
int i;
for(i=0;i<name.length;i++)
{
for(int j=i+1;j<name.length;j++)
{
if(name[i].substring(0,1).compareTo(name[j].substring(0,1))<0)
{
String temp = name[i];
name[i] = name[j];
name[j] = temp;
}
}
}
for(i = 0;i < name.length;i++)
System.out.println(name[i]);
注:以下のようにファイルの内容は次のとおりです。配列がアルファベット順でソートされないのはなぜですか?
John
Rachel
Peter
Illyana
Erik
Jimmy
Dan
Ken
Guile
Barbara
出力は次のとおりです。
John
Rachel
Peter
Illyana
Erik
Jimmy
Dan
Ken
Guile
Barbara
John
Rachel
Peter
Illyana
Erik
Jimmy
Dan
Ken
Guile
Barbara
**それが問題の原因になる可能性があり、私は、OS Xを使用していますか?
あなたはルーチンが名前の配列を読み込むことを期待しているようですが、実際にはファイルに改行を入れなければなりません。古いMac OSを使用していた場合は、\ n(Linux、現代Mac OS)または\ r \ n(Windows)ではなく、デフォルトで行末に\ rを使用していたため、問題であった可能性があります。あなたのコードは、単一行ですべての名前を読み取るように見えるので、ソートするものはありません。 –
配列内にアイテムが1つしかないように見えます。新しい文字列が入っています。単一の項目を持つ配列をソートすると、結果と同じ配列が返されます。 –