Java 删除最后一个新行字符串
所以我已经尝试了几乎所有的方法来去除代码中的最后一个换行符。它应该在每次递归调用后打印新行,最后一次除外。有什么想法吗Java 删除最后一个新行字符串,java,string,recursion,newline,Java,String,Recursion,Newline,所以我已经尝试了几乎所有的方法来去除代码中的最后一个换行符。它应该在每次递归调用后打印新行,最后一次除外。有什么想法吗 public static boolean solve(double target, ArrayList<Double> numbers) { String print = ""; String newPrint = ""; double compare = 0; boolean done = false; for (do
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;
}
}
公共静态布尔解算(双目标,数组列表编号)
{
字符串打印=”;
字符串newPrint=“”;
双重比较=0;
布尔完成=假;
for(双数字:数字)
{
如果(!完成)
{
ArrayList剩余=新的ArrayList(编号);
剩余。移除(num);
如果(目标==num)
{
完成=正确;
}
其他的
{
完成=解决(目标+数量,剩余);
如果(完成)
{
打印+=((int)目标+(int)num)+++“-++”(int)num++”
+ "="
+ " "
+((int)target+“\n”);
}
其他的
{
完成=解决(目标-数量,剩余);
如果(完成)
{
打印+=((int)目标-(int)num)+++++++++++(int)num++”
+ "=" + " "
+((int)target+“\n”);
}
其他的
{
完成=解决(目标*num,剩余);
如果(完成)
{
打印+=((int)目标*(int)num)+++“/”++(int)num
+ " " + "=" + " "
+((int)target+“\n”);
}
其他的
{
完成=解决(目标/数量,剩余);
如果(完成)
{
打印+=((int)目标/(int)数值)+++*++
+(int)num
+ " " + "="
+“+((int)target+”\n”);
}
}
}
}
}
}
}
系统输出打印(打印);
已完成的返回;
}
}
结果是一个字符串,但您不需要最后一个字符,因此请删除它:
print = print.substring(0, print.length()-1);
使用trim()方法。它将删除字符串开头和结尾的空格、换行符等
系统输出打印(print.trim()) 例如:
void recursiveF(...) {
if ... {
recursiveF(...);
println();
}
...
}
Short在打印前打印新行字符 递归函数应该做的第一件事是打印新行字符。 通过这种方式,您可以将奇数大小写从最后一个函数调用转移到第一个调用,而第一个调用不应在新行字符前加前缀 您可以将参数
String prepend=“
添加到递归方法的签名中,第一次调用时该参数为空,所有后续调用都将其设置为String prepend=“\n”
。
然后,您可以只打印
prepend
,而不必费心处理其内容。为什么不使用换行符迭代numbers.size()-1
,然后不为最后一行添加换行符?很难遵循您的逻辑。您的问题是一个常见问题,一个简单的解决方案是仅在存在另一个递归的情况下打印换行符。与其在除最后一行之外的每一行之后打印换行符,不如在除第一行之外的每一行之前打印换行符。知道你什么时候是第一个要比知道你什么时候是最后一个容易得多。我也建议先把它打印出来@Hasseb Waseem看看我的答案。这种方法是有效的,但我宁愿使用尾部递归或循环。