所以我已经尝试了很多东西来摆脱代码中的最后一个换行符。它应该在每次递归调用之后打印一个新行,除了最后一个。有什么想法吗?
public static boolean solve(double target, ArrayList<Double> numbers)
{
String print = "";
String newPrint = "";
double compare = 0;
boolean done = false;
for (double num : numbers)
{
if (!done)
{
ArrayList<Double> remaining = new ArrayList<Double>(numbers);
remaining.remove(num);
if (target == num)
{
done = true;
}
else
{
done = solve(target + num, remaining);
if (done)
{
print += ((int) target + (int) num) + " " + "-" + " " + (int) num + " "
+ "="
+ " "
+ ((int) target + "\n");
}
else
{
done = solve(target - num, remaining);
if (done)
{
print += ((int) target - (int) num) + " " + "+" + " " + (int) num + " "
+ "=" + " "
+ ((int) target + "\n");
}
else
{
done = solve(target * num, remaining);
if (done)
{
print += ((int) target * (int) num) + " " + "/" + " " + (int) num
+ " " + "=" + " "
+ ((int) target + "\n");
}
else
{
done = solve(target / num, remaining);
if (done)
{
print += ((int) target / (int) num) + " " + "*" + " "
+ (int) num
+ " " + "="
+ " " + ((int) target + "\n");
}
}
}
}
}
}
}
System.out.print(print);
return done;
}
}
答案 0 :(得分:1)
例如:
void recursiveF(...) {
if ... {
recursiveF(...);
println();
}
...
}
答案 1 :(得分:0)
结果是一个字符串但你不想要最后一个字符,所以删除它:
print = print.substring(0, print.length()-1);
答案 2 :(得分:0)
使用trim()方法。它将从字符串的开头和结尾删除空格,换行符等。
是System.out.print(的 print.trim()强>);
答案 3 :(得分:0)
短之前打印新的换行符。
递归函数应该做的第一件事是打印换行符。 这样就可以将奇数情况从最后一个函数调用转移到第一个调用,该调用不应该在前面添加一个新行。
您可以在递归方法的签名中添加参数String prepend = ""
,在第一次调用时它是空的,所有进一步的调用都将其设置为String prepend = "\n"
。
然后你可以打印prepend
而无需烦恼其内容。