String.format()不会正确格式化输出

时间:2017-06-11 05:16:41

标签: java linked-list formatting string.format

我有一个问题,我的输出不正确,我不想知道如何解决它。

在这张图片中你可以看到2017年1月的标题。 。 。 。一段时间后推迟了。

Januar 2017            Februar 2017            Maerz 2017            
So|01|            |1    Mi|01|            |32    Mi|01|            |60    
Mo|02|            |2    Do|02|            |33    Do|02|            |61    
Di|03|            |3    Fr|03|            |34    Fr|03|            |62    
Mi|04|            |4    Sa|04|            |35    Sa|04|            |63    
Do|05|            |5    So|05|            |36    So|05|            |64    
Fr|06|            |6    Mo|06|            |37    Mo|06|            |65    

我正在尝试这样做。月份名应该从Weekdayname(短)So Mo Di Mi Do Fr Su

开始
Januar 2017             Februar 2017             Maerz 2017            
So|01|            |1    Mi|01|            |32    Mi|01|            |60    
Mo|02|            |2    Do|02|            |33    Do|02|            |61    
Di|03|            |3    Fr|03|            |34    Fr|03|            |62    
Mi|04|            |4    Sa|04|            |35    Sa|04|            |63    
Do|05|            |5    So|05|            |36    So|05|            |64    
Fr|06|            |6    Mo|06|            |37    Mo|06|            |65    

这是我的代码如何构建monthPaper

public LinkedList<String> buildMonth(int month) {
    int lengthOfMonth = calender.getLengthOfMonth(this.year, month);
    LinkedList<String> monthList = new LinkedList<>();
    monthList.add(String.format("%-10s",monthname[month]) + String.format("%-17s", this.year));

    for (int day = 1; day <= lengthOfMonth; day++) {
        int daynumber = kf.daynumber(day, month, this.year);
        int weekday = kf.wochentag_im_jahr(this.year, daynumber);


            String monthPlan = weekdayShort[weekday] + "|" + String.format("%02d",day) +"|\t\t\t|" +String.format("%-10s",calender.getTwoDigit(daynumber));
            monthList.add(monthPlan);


    }
    return monthList;
}

1 个答案:

答案 0 :(得分:0)

我认为问题是/t的长度在不同系统中会有所不同,您应该更改天数字符串的格式。尝试以这种方式做到

System.out.println(String.format("%s|%02d|%20s%-6s", weekdayShort[weekday], day, "|", calender.getTwoDigit(daynumber)));