[英]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.