2013-02-18 39 views
6

Tôi có một chương trình có người dùng nhập vào một danh sách các tên. Tôi có một trường hợp chuyển đổi đi đến một chức năng mà tôi muốn có tên in ra theo thứ tự chữ cái.Liệt kê một mảng các chuỗi theo thứ tự bảng chữ cái

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

Tôi đã thử cả hai

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

java.util.Collections.sort(hotel); 
+3

gì đã không làm việc về những giải pháp? –

+0

Đăng toàn bộ mã. Với thứ tự bạn đang làm mọi thứ. – Maroun

Trả lời

11

Weird, mã của bạn dường như làm việc cho tôi:

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]); 
    } 
} 

Tôi chạy mã mà sử dụng "java Kiểm tra Bobby Joe Angel "và đây là đầu ra:

$ java Test Bobby Joe Angel 
Angel 
Bobby 
Joe 
1

Đây là mã mà làm việc:

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)); 
    } 

} 
2

Bạn chỉ có thể sử dụng Arrays#sort(), nó làm việc một cách hoàn hảo. Xem ví dụ này:

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]); 
} 
4

Điều đầu tiên bạn đã thử có vẻ hoạt động tốt. Đây là một chương trình ví dụ.
Nhấn nút "Bắt đầu" ở trên cùng của this page để chạy nó để xem đầu ra cho chính bạn.

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)); 
    } 
} 
1

java.util.Collections.sort (listOfCountryNames, Collator.getInstance());

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]); 
} 
} 
}** 
1

Bằng chữ cái đặt hàng tôi giả sử thứ tự là: A | một < B | b < C | c ... Hy vọng điều này là những gì @Nick là (hoặc đã) tìm kiếm và các câu trả lời sau giả định trên.

tôi sẽ đề nghị để có một lớp thực hiện phương pháp sánh giao diện như so sánh:

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

và từ phương pháp gọi điện thoại gọi phương thức Arrays.sort với tùy chỉnh sánh như:

Arrays.sort(inputArray, customComparator); 

Kết quả quan sát được: đầu vào Mảng: "Vani", "Kali", "Mohan", "Soni", "kuldeep", "Arun"

đầu ra (thứ tự chữ cái) là: Arun, Kali, kuldeep, Mohan, Soni, Vani

Output (Natural-trật tự bằng cách thực hiện Arrays.sort (inputArray) là: Arun, Kali, Mohan, Soni, Vani, kuldeep

Như vậy trong trường hợp đặt hàng tự nhiên, [Vani < kuldeep] mà sự hiểu biết của tôi về thứ tự chữ cái không phải là điều mong muốn.

cho sự hiểu biết hơn về/từ vựng để truy cập tự nhiên và tự chữ cái discussion here

0

Mảng.sắp xếp (stringArray); Điều này sắp xếp mảng chuỗi dựa trên các giá trị ký tự Unicode. Tất cả các chuỗi có chứa các ký tự viết hoa ở đầu chuỗi sẽ nằm ở đầu danh sách được sắp xếp theo thứ tự bảng chữ cái theo sau bởi tất cả các chuỗi có ký tự chữ thường. Do đó nếu mảng chứa các chuỗi bắt đầu với cả hai ký tự chữ hoa và ký tự chữ thường, các mảng được sắp xếp sẽ không quay trở lại một trường hợp để không nhạy cảm danh sách chữ cái

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

Output là: Alice, Carol, bob,

Nếu bạn yêu cầu các String được sắp xếp mà không liên quan đến trường hợp, bạn sẽ cần một đối số thứ hai, một Comparator, cho Arrays.sort(). Một bộ so sánh như vậy đã được viết cho chúng ta và có thể được truy cập như là một tĩnh trên lớp String có tên CASE_INSENSITIVE_ORDER.

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

Output là: Alice, bob, Carol

Các vấn đề liên quan