-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)。你的代码似乎只读了一行中的所有名字,所以它没有任何东西可以排序。 –
看起来你在数组中只有一个项目:一个带有新行的单个字符串。当您使用单个项目对数组进行排序时,您会得到与结果相同的数组。 –