Java 使用最小if-else进行求解
好了,伙计们,我需要用最小if-else条件来解决这个问题。让我解释一下我的问题。 假设有三个字符串city、state和country,我需要按以下格式打印它Java 使用最小if-else进行求解,java,logic,Java,Logic,好了,伙计们,我需要用最小if-else条件来解决这个问题。让我解释一下我的问题。 假设有三个字符串city、state和country,我需要按以下格式打印它 city,state,country 如果city=”“,则需要 state,country city,country 如果状态为“”,则需要 state,country city,country 如果国家=“那么 如果所有字符串都是“”,则不应打印任何内容或仅打印一个“”。 和所有其他可能的条件。这三个字符串可能有值,或
city,state,country
如果city=”“,则需要
state,country
city,country
如果状态为“”,则需要
state,country
city,country
如果国家=“那么
如果所有字符串都是“”,则不应打印任何内容或仅打印一个“”。
和所有其他可能的条件。这三个字符串可能有值,或者可能包含“”NOTNULL。因此,使用最小if-else条件我需要解决这个问题。
注意:不是家庭作业。您可以通过以下方式完成:
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);
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);
不过不是很优雅
另外,我会使用guava的
Joiner
来完成这样的任务。将它们全部添加到数组或列表中,然后使用字符串生成器来构建输出,如下所示(伪代码):
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);
StringBuilder sb=新建StringBuilder();
对于(int i=0;i 0)
sb.deleteCharAt(sb.length()-1);
如果它们都是”
?您尝试了什么?您希望何时显示逗号?必须使用逗号。这是必需的。您正在解决一个错误的问题,或者这是一个家庭作业。请尝试以下操作:(城市+“,“+州+”,“+国家”)。替换(“,”,”)。替换全部(^,|,$,”);你认为你需要parantises(“city”+“,”)
,等等,如果country
为空怎么办?你会打印出城市、州(结尾不需要的逗号)。你比我快!这是最好的解决方案。如果州和国家为空,但您只有城市,则似乎不起作用。打印城市,哦。是我的错。修正了。你们为什么做其他家庭作业:),很好的解决方案!为了名誉,我猜…在结尾总是会有一个额外的逗号。现在如果三个字符串都为空,它将崩溃。你的权利,再次修复:)@Dukeling最初错过了它。