PrintStream意外地移动到新线?

时间:2014-02-21 02:29:20

标签: java output println printstream

我无法弄清楚为什么我的代码导致PrintStream转到新行:

// displays the total time of the leak in months from the calculateLeakTime() method. 
    String leakTime = LeakCalculator.calculateLeakTime(); 
    System.out.println("The total time of the leak is " + leakTime + " months.");

输出如下:

“泄漏的总时间为12
几个月。“

我无法弄清楚为什么要在新线上打印月份。我甚至试过这个:

// displays the total time of the leak in months from the calculateLeakTime() method. 
    String leakTime = LeakCalculator.calculateLeakTime(); 
    System.out.print("The total time of the leak is " + leakTime);
    System.out.println(" months.");

我得到了相同的输出。有人可以解释为什么它将“几个月”转移到新的生产线上吗?

谢谢,

凯文

编辑:这是calculatLeakTime()方法:

static String calculateLeakTime() throws ParseException{

    long leakEndMili = getLeakEnd(); 
    long leakBeginMili = getLeakBegin(); 

    long timeDays = ((leakEndMili - leakBeginMili) / (1000 * 60 * 60 * 24));

    double timeMonths = (double) (timeDays * 0.0328549); 

    System.out.println(timeMonths);

    String monthsRounded = String.format("%.0f%n", timeMonths); 

    return monthsRounded; 
    }

2 个答案:

答案 0 :(得分:0)

这样做是因为您的LeakCalculator.calculateLeakTime()方法将换行符"\n"添加到它返回的String的末尾。为了确定,请打印出组成String返回的各个字符。

要解决此问题,请修复您的LeakCalculator.calculateLeakTime()方法,以便它不会为其返回的字符串添加换行符。也许它应该返回一个数字,而不是一个字符串。


修改
你说:

  

我怀疑这是问题格式(“%。0f%n”,timeMonths)

是的,%n是一个换行符。

答案 1 :(得分:0)

从以下行中删除“%n”:

  

String monthsRounded = String.format(“%。0f%n”,timeMonths);