2016-10-01 54 views
-2

這是我在這裏的第一篇文章,我對Java很新,所以要溫和。比較由第一個字母輸入的名稱

我在使用compareTo()進行賦值,基本上用戶將輸入他們的名字。如果該名稱出現在字符串中已經設置的某些名稱之前,之後或之間,則會相應地顯示一條消息。

我基本上想知道最簡單的方法是什麼?轉換的名字int S左右,我可以更容易地做NAMEA> nameB ...等等

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

這應該適用於這條線,但現在我要看看他們進入的是在nameB之間nameD和我不能使用字符串><

+0

打開字符串的來源(或CharSequence的可能)類... – YMomb

+1

你可以編寫你自己的Comparator類來比較兩個字符串的第一個字母 –

+0

另外一個駭客方法是使用如下條件:'if(name.compareTo(nameB)<0 && name.compareTo(nameD)> 0)'。但@ cricket_007建議的解決方案是更好的方法。 –

回答

0

讓我們試試吧

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

謝謝,這有助於很多 –

0

您可以使用TreeSet的(排序與有用的方法設置):

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); 
相關問題