【问题标题】:comparing a name entered by first letter比较第一个字母输入的名称
【发布时间】:2016-10-01 15:01:32
【问题描述】:

这是我在这里的第一篇文章,我对 Java 很陌生,所以要温柔。

我正在使用 compareTo() 进行分配,基本上用户将输入他们的姓名。如果该名称出现在我已经在 String 中设置的某些名称之前、之后或之间,那么它将相应地显示一条消息。

我基本上想知道最简单的方法是什么?将名称转换为ints,这样我就可以更轻松地执行 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 之间,并且我不能将 &gt;&lt; 与字符串一起使用。

【问题讨论】:

  • 打开String(或者可能是CharSequence)类的源代码...
  • 您可以编写自己的 Comparator 类来比较两个字符串的第一个字母
  • 另一种骇人听闻的方法是设置如下条件:if (name.compareTo (nameB) &lt; 0 &amp;&amp; name.compareTo (nameD) &gt; 0)。但是@cricket_007 建议的解决方案是更好的方法。

标签: java string-comparison


【解决方案1】:

试试看

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

【讨论】:

    【解决方案2】:

    您可以使用 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);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-01-26
      • 2012-09-13
      • 1970-01-01
      • 2018-07-11
      • 2015-04-27
      • 2023-03-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多