[英]Deleting last new line string
所以我已经尝试了很多东西来摆脱代码中的最后一个换行符。 它应该在每次递归调用之后打印一个新行,除了最后一个。 有任何想法吗?
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;
}
}
例如:
void recursiveF(...) {
if ... {
recursiveF(...);
println();
}
...
}
结果是一个字符串但你不想要最后一个字符,所以删除它:
print = print.substring(0, print.length()-1);
使用trim()方法。 它将从字符串的开头和结尾删除空格,换行符等。
System.out.print( print.trim() );
短打印之前的新行字符。
递归函数应该做的第一件事是打印换行符。 这样就可以将奇数情况从最后一个函数调用转移到第一个调用,该调用不应该在前面添加一个新行。
你可以在递归方法的签名中添加一个参数String prepend = ""
,在第一次调用时它是空的,所有进一步的调用都将它设置为String prepend = "\\n"
。 然后你可以打印prepend
而不用打扰它的内容。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.