删除最后一个新行字符串

时间:2015-11-20 01:13:43

标签: java string recursion newline

所以我已经尝试了很多东西来摆脱代码中的最后一个换行符。它应该在每次递归调用之后打印一个新行,除了最后一个。有什么想法吗?

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;
  }
}

4 个答案:

答案 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而无需烦恼其内容。