2016-10-01 1 views
-2

Dies ist mein erster Beitrag hier und ich bin sehr neu in Java, also sei sanft.Vergleichen eines Namens eingegeben durch den ersten Buchstaben

Ich bin auf einer Zuordnung mit compareTo() und im Grunde werden die Benutzer ihren Namen eingeben. Wenn dieser Name vor, nach oder zwischen einigen Namen steht, die ich bereits in String festgelegt habe, wird eine entsprechende Meldung angezeigt.

Ich frage mich im Grunde, was ist der einfachste Weg, dies zu tun? Konvertieren Sie die Namen zu int s so kann ich leichter tun namea> nameB ... und so weiter

int result; 
String name;  
String nameB = "Baggins"; 
String nameD = "Dresden"; 
String nameH = "Howl"; 
String nameP = "Potter"; 
String nameV = "Vimes"; 

System.out.println("What's your last name?"); 
name = inputReader.next(); 

result = name.compareTo (nameB); 

if (result < 0){ 
    System.out.println("Great! You are on team Red Dragons."); 
} 

Dies sollte für diese Linie arbeiten, aber jetzt brauche ich, um zu sehen ob das, was sie geben zwischen nameB und nameD und ich kann > und < mit Strings nicht verwenden.

+0

Öffnen Sie die Quellen des String (oder CharSequence vielleicht) Klasse ... – YMomb

+1

können Sie Schreiben Sie Ihre eigene Comparator-Klasse, um den ersten Buchstaben zweier Strings zu vergleichen –

+0

Ein anderer hackischer Ansatz wäre eine Bedingung wie: 'if (name.compareTo (nameB) <0 && name.compareTo (nameD)> 0)'. Die von @ cricket_007 vorgeschlagene Lösung ist jedoch ein besserer Ansatz. –

Antwort

0

Lassen Sie versuchen, es

if(name.compareTo(nameB) >= 0 && name.compareTo(nameD) <= 0) 
+0

Danke, das hilft viel –

0

Sie TreeSet (Sorted mit nützlichen Methoden eingestellt) verwenden können:

TreeSet names = new TreeSet<String>((a,b) -> a.compareTo(b)); 
//or other comparator, eg: (a,b)-> a.substring(0,2).compareTo(b.substring(0,2)); 
names.add("Baggins"); 
names.add("Dresden"); 
.... 
names.higher(input); // name higher than input 
names.lower(input); 
Verwandte Themen