if (authors.length >= 1) {
System.out.print(authors[0]);
}
for (int i = 1; i < authors.length; i++) {
System.out.print("; " + authors[i]);
}
所以这个输出是author1; author2; author3
如何将其更改为author1; author2 & author3
?如果只有2位作者,则输出应为author1 & author2
。提前谢谢。
答案 0 :(得分:5)
您只需要在循环中添加一个条件来处理最后一种情况:
for (int i = 1; i < authors.length; i++) {
if(i == authors.length - 1)
System.out.print("& " + authors[i]);
else
System.out.print("; " + authors[i]);
}
答案 1 :(得分:3)
执行此操作的一种方法是更改代码的结构以使用循环和boolean
标志而不是条件,如下所示:
boolean isFirst = true;
for (int i = 0 ; i != authors.length ; i++) {
if (!isFirst) {
System.out.print(i == authors.length-1 ? "& " : "; ");
} else {
isFirst = false;
}
System.out.print(authors[i]);
}
答案 2 :(得分:2)
您可以递归地将案件清楚地分开。似乎缺乏其他答案。
这是代理功能:
public static String doIt(String[] authors){
if (authors == null || authors.length == 0){
return "";
}
if (authors.length == 1){
return authors[0];
}
return authors[0] + doHelper(authors, 1);
}
辅助函数:
public static String doItHelper(String[] authors, int index){
if (index == authors.length - 1){
return " & " + authors[index];
}
return "; " + authors[index] + doItHelper(authors, index + 1);
}
正如评论中所述(感谢@JNYRanger),当性能成为问题时,这是不最佳。
现在无法测试,所以我希望这个想法很明确。
答案 3 :(得分:1)
以这种方式尝试:
String[] authors = { "1", "2", "3", "4", "5" };
StringBuffer sb = new StringBuffer();
for (int i = 0; i < authors.length; i++) {
sb.append(authors[i]);
if (i + 2 < authors.length) {
sb.append(";");
} else if (i + 2 == authors.length) {
sb.append("&");
}
}
System.out.print(sb.toString());
答案 4 :(得分:1)
for (int i = 0; i < authors.length; i += 1) {
if (i > 0) {
System.out.print(i < authors.length - 1 ? "; " : " & ");
}
System.out.print(authors[i]);
}
答案 5 :(得分:1)
String[] authors = {"a", "b", "c", "d"};
for (int i = 0; i < authors.length; i++) {
System.out.print((i != 0 ? (i == authors.length - 1 ? " & " : "; ") : "") + authors[i]);
}