【问题标题】:If statement help on when to use commas and spacesif 语句有助于何时使用逗号和空格
【发布时间】:2017-05-09 02:29:14
【问题描述】:

基本上我已经建立了一个字符串,我需要在何时使用逗号和空格时添加一个 if 语句。所以基本上我需要它在第一个元素之后而不是最后一个元素。

这是我当前的代码:

它返回的输出是

“事物1事物2事物3”

我想让输出成为

“事物1,事物2,事物3”

我需要一个 if 语句作为何时放置逗号和空格的要求的一部分。

提前致谢。

【问题讨论】:

  • 你试过什么?如果你知道你需要一个逗号后跟一个空格,你不能简单地将它连接到你现有的字符串(第一个和第二个之间)吗?关于实际的 if 语句,假设您已经有了第二个字符串,您可以检查是否应该添加逗号/空格(也许如果第二个字符串不为空)?我假设这是某种类型的家庭作业或练习,如果您想知道为什么我不只是在那里抛出答案。
  • 当它用于多个元素时我需要它,而不是在最后一个元素之后使用逗号和空格。
  • @John 您可以在每个元素之前放置一个条件 s != null 或空并放置(逗号 + 空格)
  • 编辑了我最初的帖子以使其更清晰。

标签: java if-statement spaces


【解决方案1】:

这对您来说可能有点高级,但在使用 Java 8 时非常容易(如果 thingsCollection

return Optional.of(things.stream()
                         .filter(thing -> thing.getCategory() == things.STUFF)
                         .collect(Collectors.joining(", ")))
               .orElse("nothing");

如果您使用的是 Java 7,那么您可以手动完成:

StringBuilder sb = new StringBuilder();

for (Thing thing : things) {
    if (things.getCategory() == some.STUFF){
        sb.append(thing.getName()).append(", ");
    }
}

if (s.isEmpty()) {
    return "nothing";
}

return sb.delete(sb.length() - 2, sb.length()).toString();

【讨论】:

  • 测试人员只使用 Java 7,所以它不适合我。
【解决方案2】:

我会使用 for 循环而不是 for-each 循环 - 只是因为我认为它消除了对额外计数器变量的需要。这就是我解决问题的方式。

    String[] things = {"thing 1", "thing 2", "thing 3", "thing 4"};

    for(int i = 0; i < things.length; i++)
    {
        if(i < things.length - 1)
        {
            System.out.print(things[i] + ", ");
        }
        else
        {
            System.out.print(things[i] + ".");
        }
    }

【讨论】:

    【解决方案3】:

    题主有一些不清楚的地方,所以下面的代码是基于我目前所了解的。

    String s = "";
    boolean isComma = true; // true = comma, false = space.
    for (Thing thing : things)
    {
        if (things.getCategory() == thing.STUFF)
        {
            //Check if there already exists an entry within the String.
            if (s.length() > 0)
            {
                //Add comma or space as required based on the isComma boolean.
                if (isComma)
                {
                    s += ", ";
                }
                else
                {
                    s += " ";
                }
            }
            s += thing.getName();
        }
    }
    
    if (s.equals(""))
    {
        s += "nothing";
    }
    return s;
    

    【讨论】:

    • 所以我尝试了你的方法,现在它给了我“thing1,thing2,thing3”那么我需要添加什么让它看起来像“thing1,thing2,thing3”?
    • 将有s += ",";的行改为s += ", ";
    猜你喜欢
    • 2010-10-16
    • 2016-05-04
    • 2016-02-11
    • 2015-04-10
    • 1970-01-01
    • 1970-01-01
    • 2015-05-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多