0

好的,伙计们,我需要使用 minimum if else 条件来解决这个问题。让我解释一下我的问题。假设有三个字符串城市,州和国家。我需要按以下格式打印

city,state,country

如果如果 city="" 那么它需要是

state,country

如果 state="" 它需要是

 city,country

如果国家=“”那么

city,state

如果所有字符串都是“”,则不应打印任何内容或仅打印“”。以及所有其他可能的条件。这三个字符串可能具有值或可能包含“”而不是空值。所以使用最少的条件我需要解决这个问题。 注意:不是家庭作业。

4

4 回答 4

10
StringBuilder sb = new StringBuilder ();
for (String s: new String [] {city, state, country})
{
    if (!s.isEmpty ())
    {
        if (sb.length () > 0) sb.append (",");
        sb.append (s);
    }
}
System.out.println (sb);
于 2013-02-06T07:20:56.763 回答
2

您可以通过以下方式进行操作:

StringBuilder builder = new StringBuilder();
builder.append((city.isEmpty() ? "" : city + ","))
       .append(((state.isEmpty() ? "" : state + ",")))
       .append(((country.isEmpty() ? "" : country)));
String result = builder.toString();
if (result.endsWith(","))
    result = result.substring(0, result.length() - 1);
System.out.println(result);

不过,不是很优雅。

PS我会使用番石榴Joiner来完成这样的任务。

于 2013-02-06T07:21:16.747 回答
1

将它们全部添加到数组或列表中,然后使用字符串构建器构建输出,如下所示(伪代码):

StringBuilder sb = new StringBuilder();
for(int i=0; i<array.length-1; i++)
   if (!"".equals(array[i]))
      stringbuilder.append(s + ",");                   

if (sb.length() > 0)
  sb.deleteCharAt(sb.length()-1); 
于 2013-02-06T07:25:41.843 回答
0
String finalString =(city.equals("") ? "" : ("city"  + ",")) +
                    (state.equals("")? "" : ("state" + ",")) +
                    country.equals("") ? "" : "country"

finalString = finalString.endsWith(",") ? finalString.substring(0, finalString.length-1) : finalString;

System.out.println(finalString);
于 2013-02-06T07:22:12.320 回答