2016-10-01 67 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); 
相关问题