-1
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,則可能會出現問題,因爲它默認使用\ r作爲默認行而不是\ n(linux,現代Mac OS)或\ r \ n(Windows)。你的代碼似乎只讀了一行中的所有名字,所以它沒有任何東西可以排序。 –
看起來你在數組中只有一個項目:一個帶有新行的單個字符串。當您使用單個項目對數組進行排序時,您會得到與結果相同的數組。 –