【问题标题】:is it possible to get user's input to multiple txtfields [by getText()] and then concatenate it?是否可以 [通过 getText()] 将用户的输入输入到多个 txtfields 然后将其连接起来?
【发布时间】:2014-08-16 13:31:37
【问题描述】:

是否可以 [通过 getText()] 将用户的输入获取到多个 txtfields,然后将其连接起来? 比如说,我有 5 个 txtfields,我想获取他输入到每个 txtfields 的字母,然后将其与正确的单词进行比较(这就像一个 4pics1word 游戏)。

        String s1 = field1.getText();
        String s2 = field2.getText();
        String s3 = field3.getText();
        String s4 = field4.getText();
        String s5 = field5.getText();

        if (s1 + s2 + s3 + s4 + s5 == "hello") {
            lvl++;
        }

这甚至可能吗? (大声笑。对不起,我是初学者) 如果不是,你会建议我做什么?谢谢

【问题讨论】:

  • 您刚刚做到了(除了您将结果与“hello”进行比较的方式),为什么不可能?如果您想了解有关 == 对字符串的行为的更多信息,您可能会对查看 String.intern(à 方法的文档感兴趣。
  • 你有办法!

标签: java concatenation string-concatenation


【解决方案1】:

是的,这是可能的。你做的几乎是对的:

String result = s1 + s2 + s3 + s4 + s5;
if ("hello".equals(result) {
  lvl++;
}

如果你涉足更多领域,你应该关注StringBuilder

String result = new StringBuilder().append(s1).append(s2).append(s3).append(s4).append(s5).toString();
if ("hello".equals(result) {
  lvl++;
}

对于 Java 8:

String result = Arrays.asList(field1, field2, field3, field4, field5)
                      .stream()
                      .map(field -> field.getText()) // or ClassOfField::getText
                      .collect(Collectors.joining());

【讨论】:

    【解决方案2】:

    是的,完全有可能。您的代码的唯一问题是您使用== 来比较字符串,这几乎从不工作(用于比较它们的内容)。使用.equals

    if ("hello".equals(s1 + s2 + s3 + s4 + s5) {
    

    == 与字符串对象一起使用可比较对象引用。您可以拥有多个具有相同字符序列的字符串对象,这就是equals 的用途。在 Java 中,您基本上从不将 == 与字符串一起使用。

    【讨论】:

      【解决方案3】:

      是的,这是完全可能的。但是请注意,字符串比较应该使用equals,而不是==

      if ((s1 + s2 + s3 + s4 + s5).equals("hello")) {
        lvl++;
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-12-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-08-21
        • 2011-10-02
        • 1970-01-01
        相关资源
        最近更新 更多