29

我有一个程序让用户输入名称列表。我有一个开关盒转到一个功能,我希望按字母顺序打印名称。

public static void orderedGuests(String[] hotel)
{
  //??
}

我都试过了

Arrays.sort(hotel);
System.out.println(Arrays.toString(hotel));

java.util.Collections.sort(hotel);
4

11 回答 11

29

奇怪,你的代码似乎对我有用:

import java.util.Arrays;

public class Test
{
    public static void main(String[] args)
    {
        // args is the list of guests
        Arrays.sort(args);
        for(int i = 0; i < args.length; i++)
            System.out.println(args[i]);
    }
}

我使用“java Test Bobby Joe Angel”运行了该代码,输出如下:

$ java Test Bobby Joe Angel
Angel
Bobby
Joe
于 2013-02-18T21:41:44.507 回答
5

您尝试的第一件事似乎工作正常。这是一个示例程序。按此页面
顶部的“开始”按钮运行它以自己查看输出。

import java.util.Arrays;

public class Foo{
    public static void main(String[] args) {
        String [] stringArray = {"ab", "aB", "c", "0", "2", "1Ad", "a10"};
        orderedGuests(stringArray);
    }

    public static void orderedGuests(String[] hotel)
    {
        Arrays.sort(hotel);
        System.out.println(Arrays.toString(hotel));
    }
}
于 2013-02-18T21:57:56.720 回答
3

你可以使用Arrays#sort(),它工作得很好。看这个例子:

String [] a = {"English","German","Italian","Korean","Blablablabla.."};
//before sort
for(int i = 0;i<a.length;i++)
{
  System.out.println(a[i]);
}
Arrays.sort(a);
System.out.println("After sort :");
for(int i = 0;i<a.length;i++)
{
  System.out.println(a[i]);
}
于 2013-02-18T21:42:56.383 回答
2
java.util.Collections.sort(listOfCountryNames, Collator.getInstance());
于 2014-01-30T10:20:20.523 回答
1

这是有效的代码:

import java.util.Arrays;
import java.util.Collections;

public class Test
{
    public static void main(String[] args)
    {
        orderedGuests1(new String[] { "c", "a", "b" });
        orderedGuests2(new String[] { "c", "a", "b" });
    }

    public static void orderedGuests1(String[] hotel)
    {
        Arrays.sort(hotel);
        System.out.println(Arrays.toString(hotel));
    }

    public static void orderedGuests2(String[] hotel)
    {
        Collections.sort(Arrays.asList(hotel));
        System.out.println(Arrays.toString(hotel));
    }

}
于 2013-02-18T21:42:50.580 回答
1

CompareTo()方法:根据 Unicode 字符值比较两个字符串。

import java.util.*;

public class Test {

int n,i,temp;
String names[n];

public static void main(String[] args) {
String names[5] = {"Brian","Joshua","Louis","David","Marcus"};

for(i=0;i<5;i++){
    for(j=i+1;i<n;j++){
        if(names[i].CompareTo(names[j]>0) {
             temp=names[i];
             names[i]=names[j];
             names[j]=temp;
         } else
             System.out.println("Alphabetically Ordered");                               
         }
     }                              
}
于 2018-11-26T19:16:01.303 回答
1

Arrays.sort(stringArray); 这会根据 Unicode 字符值对字符串数组进行排序。在字符串开头包含大写字符的所有字符串将按字母顺序位于排序列表的顶部,然后是所有带有小写字符的字符串。因此,如果数组包含以大写字符和小写字符开头的字符串,则排序后的数组将不会返回不区分大小写的字母顺序列表

String[] strArray = { "Carol", "bob", "Alice" };
Arrays.sort(strList);
System.out.println(Arrays.toString(hotel));

输出是:爱丽丝,卡罗尔,鲍勃,

如果您要求对字符串进行排序而不考虑大小写,则需要为 Arrays.sort() 提供第二个参数,即比较器。已经为我们编写了这样的比较器,并且可以在名为 CASE_INSENSITIVE_ORDER 的 String 类上作为静态访问。

String[] strArray = { "Carol", "bob", "Alice" };
Arrays.sort(stringArray, String.CASE_INSENSITIVE_ORDER);
System.out.println(Arrays.toString(strArray ));

输出是:爱丽丝,鲍勃,卡罗尔

于 2018-02-21T11:49:20.103 回答
1

您可以使用 Arrays.sort() 方法。这是一个例子,

import java.util.Arrays;

public class Test 
{
    public static void main(String[] args) 
    {
        String arrString[] = { "peter", "taylor", "brooke", "frederick", "cameron" };
        orderedGuests(arrString);
    }

    public static void orderedGuests(String[] hotel)
    {
        Arrays.sort(hotel);
        System.out.println(Arrays.toString(hotel));
    }
}

输出

[布鲁克、卡梅伦、弗雷德里克、彼得、泰勒]

于 2018-06-08T08:00:01.400 回答
1

按字母顺序,我假设顺序为: A|a < B|b < C|c... 希望这是@Nick 正在(或曾经)寻找的内容,并且答案遵循上述假设。

我建议让一个类实现比较器接口的比较方法:

public int compare(Object o1, Object o2) {
    return o1.toString().compareToIgnoreCase(o2.toString());
}

并从调用方法调用具有自定义 Comparator 的 Arrays.sort 方法:

Arrays.sort(inputArray, customComparator);

观察结果:输入数组:“Vani”、“Kali”、“Mohan”、“Soni”、“kuldeep”、“Arun”

输出(字母顺序)是:Arun,Kali,kuldeep,Mohan,Soni,Vani

输出(通过执行 Arrays.sort(inputArray) 的自然顺序为:Arun、Kali、Mohan、Soni、Vani、kuldeep

因此,在自然排序的情况下,[Vani < kuldeep] 根据我对字母顺序的理解,这不是我们想要的。

要更多地了解自然和字母/词汇顺序,请访问 此处的讨论

于 2017-05-23T06:41:14.277 回答
0
**//With the help of this code u not just sort the arrays in alphabetical order but also can take string from user or console or keyboard

import java.util.Scanner;
import java.util.Arrays;
public class ReadName
{
final static int ARRAY_ELEMENTS = 3;
public static void main(String[] args)
{
String[] theNames = new String[5];
Scanner keyboard = new Scanner(System.in);
System.out.println("Enter the names: ");
for (int i=0;i<theNames.length ;i++ )
{           
theNames[i] = keyboard.nextLine();
}
System.out.println("**********************");
Arrays.sort(theNames);
for (int i=0;i<theNames.length ;i++ )
{
System.out.println("Name are " + theNames[i]);
}
}
}**
于 2014-05-07T03:09:58.047 回答
0
 public static String[] textSort(String[] words) {
    for (int i = 0; i < words.length; i++) {
        for (int j = i + 1; j < words.length; j++) {
            if (words[i].compareTo(words[j]) > 0) {
                String temp = words[i];
                words[i] = words[j];
                words[j] = temp;
            }
        }
    }

    return words;
}
于 2018-11-28T13:45:18.180 回答