Ich habe ein Programm, bei dem der Benutzer eine Liste mit Namen eingibt. Ich habe einen Schalter, der zu einer Funktion geht, deren Namen ich in alphabetischer Reihenfolge ausdrucken möchte.
public static void orderedGuests(String[] hotel)
{
//??
}
Ich habe beide probiert
Arrays.sort(hotel);
System.out.println(Arrays.toString(hotel));
und
Java.util.Collections.sort(hotel);
Komisch, Ihr Code scheint für mich zu funktionieren:
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]);
}
}
Ich habe diesen Code mit "Java Test Bobby Joe Angel" ausgeführt und hier ist die Ausgabe:
$ Java Test Bobby Joe Angel
Angel
Bobby
Joe
Das erste, was Sie versucht haben, scheint gut zu funktionieren. Hier ist ein Beispielprogramm.
Drücken Sie die "Start" -Taste oben auf dieser Seite , um die Ausgabe selbst auszuführen.
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));
}
}
Sie können einfach Arrays#sort()
verwenden, es funktioniert perfekt. Siehe dieses Beispiel:
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]);
}
Hier ist der Code, der funktioniert:
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));
}
}
In alphabetischer Reihenfolge nehme ich an, dass die Reihenfolge wie folgt lautet: A | a <B | b <C | c ... Ich hoffe, das ist es, wonach @Nick sucht (oder war) und die Antwort folgt der obigen Annahme.
Ich würde vorschlagen, eine Klassenimplementvergleichsmethode von Comparator-interface zu haben:
public int compare(Object o1, Object o2) {
return o1.toString().compareToIgnoreCase(o2.toString());
}
und von der aufrufenden Methode rufen Sie die Arrays.sort-Methode mit benutzerdefiniertem Comparator auf:
Arrays.sort(inputArray, customComparator);
Beobachtete Ergebnisse: Eingabe Array: "Vani", "Kali", "Mohan", "Soni", "kuldeep", "Arun"
ausgabe (alphabetische Reihenfolge) ist: Arun, Kali, Kuldeep, Mohan, Soni, Vani
Ausgabe (natürliche Reihenfolge durch Ausführen von Arrays.sort (inputArray) ist: Arun, Kali, Mohan, Soni, Vani, Kuldeep
Daher ist [Vani <kuldeep], was für mein Verständnis der alphabetischen Reihenfolge nicht die erwünschte Sache ist, im Falle einer natürlichen Ordnung.
zum besseren Verständnis der natürlichen und alphabetischen/lexikalischen Reihenfolge besuchen Sie Diskussion hier
Java.util.Collections.sort (listOfCountryNames, Collator.getInstance ());
CompareTo()
-Methode: Die beiden Zeichenfolgen werden basierend auf Unicode-Zeichenwerten verglichen.
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");
}
}
}
**//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]);
}
}
}**
Arrays.sort (stringArray); Hiermit wird das String-Array basierend auf den Unicode-Zeichenwerten sortiert. Alle Zeichenfolgen, die am Anfang der Zeichenfolge Großbuchstaben enthalten, befinden sich alphabetisch an der Spitze der sortierten Liste, gefolgt von allen Zeichenfolgen mit Kleinbuchstaben. Wenn das Array Zeichenfolgen enthält, die sowohl mit Großbuchstaben als auch mit Kleinbuchstaben beginnen, würde das sortierte Array keine alphabetische Liste ohne Berücksichtigung der Groß- und Kleinschreibung anzeigen
String[] strArray = { "Carol", "bob", "Alice" };
Arrays.sort(strList);
System.out.println(Arrays.toString(hotel));
Ausgabe ist: Alice, Carol, Bob,
Wenn Sie die Strings ohne Berücksichtigung von Groß- und Kleinschreibung sortieren möchten, benötigen Sie ein zweites Argument, einen Comparator, für Arrays.sort (). Ein solcher Komparator wurde bereits für uns geschrieben und kann als Statik für die String-Klasse CASE_INSENSITIVE_ORDER abgerufen werden.
String[] strArray = { "Carol", "bob", "Alice" };
Arrays.sort(stringArray, String.CASE_INSENSITIVE_ORDER);
System.out.println(Arrays.toString(strArray ));
Ausgabe ist: Alice, Bob, Carol
Sie können die Methode Arrays.sort () verwenden. Hier ist das Beispiel
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));
}
}
Ausgabe
[Brook, Cameron, Frederick, Peter, Taylor]
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;
}