日期/时间和数据计数在Java中位于同一行

时间:2018-06-28 18:28:47

标签: java eclipse

我正在尝试编辑代码以给我当前日期和时间,然后在同一行上计算一些数据。我已在下面附加了Java代码。

if(tglbtnWrite.isSelected() && (intervalCounter%requiredParams[2] == 0))

                        printw.printf(dtf.format(LocalDateTime.now()) + ","); //For every new line of counts, shows current date and and time of the system.
                    r.write(POLL_FLAG_ADDRESS,0); // put it back down
                    intervalCounter++; // increment interval counter (gets reset by GO/STOP toggle)
                    for(int i = 0; i < MAX_WIDGETS; i++) { // loop through all widgets
                        NumWidget tmp = numwid.get(i);
                        if((tmp.getState() != 0) && (tmp.getState() != 16)) { // check if widget is configured for a channel
                            tmp.setAcc(tmp.getAcc() + r.read(translate[tmp.getState() - 1])); // if it is, poll the respective register
                            if(intervalCounter%requiredParams[2] == 0) { // check if we have reached integration interval                                   
                                tmp.setTextFieldText(String.format("%,d", tmp.getAcc())); // if so, update display
                                if(tglbtnWrite.isSelected()) 
                                    //s.append(tmp.getAcc()+ ","); // if write enabled, write to disk
                                    printw.printf(tmp.getAcc()+ ",");
                                    tmp.setAcc(0); // reset accumulator


                            }


                        }

我想要的是这样的:

enter image description here

相反,我得到:

enter image description here

这个想法是我想为每一行数据提供一个日期和时间戳,这就是第二行的目的。

我应该进行什么编辑?

编辑:我删除了屏幕截图并发布了代码段。

2 个答案:

答案 0 :(得分:2)

您应该使用StringBuffer建立字符串,然后对最终结果进行printf

StringBuffer sb = new StringBuffer();
sb.append(dtf.format(LocalDateTime.now()) + ",");
// Add your other items with sb.append()
// When done write out the end result
printw.printf(sb.toString());

正如安德烈亚斯(Andreas)在评论中提到的那样,您应该从中间的附录中删除\ r \ n,并且只在结尾处添加。

答案 1 :(得分:2)

之所以发生这种情况,是因为您正在循环中的每个小部件上打印"\r\n"(在Windows中是新行字符:source)。因此,它将在每个单个小部件之后中断该行。

如果您只想在打印所有后中断行。您已将循环中的打印语句更改为:

// This will not break the lines after every widget.
printw.printf(tmp.getAcc() + ",");

然后在循环之外,您应该添加

printw.println(); 
// This will print a line break appropriate to the system you are running
// your application on, regardless if it's windows or not.  

PrintStream#println的来源