我真的需要一些帮助,我从1周开始苦苦挣扎,我没有找到任何有用的东西。这就是我想要实现的:如何并排输出LinkedList的元素?
* January 2017 February 2017 March 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
这就是我的声明和初始化。
private final String[] monthname= {null, "Januar", "Februar", "Maerz", "April", "Mai", "Juni", "Juli",
"August", "September", "Oktober", "November", "Dezember"};
private final String[] weekdayShort= {"So", "Mo", "Di", "Mi", "Do", "Fr", "Sa"};
private final int[][] monthLengths= {
{0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31},
{0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}
};
private CalenderFunction cf = new CalenderFunction();
private LinkedList<LinkedList<String>> planlist = new LinkedList<>();
private int year = 2017; // Default year
private String weekDayName;
private Calender calender = new Calender();
这就是我如何建立我的月刊。
public LinkedList<String> buildMonth(int month) {
LinkedList<String> monthList = new LinkedList<>();
String header = this.monthName[month] + " " + this.year;
monthList.add(header);
int lengthOfTheMonth= calender.getLengthOfTheMonth(year, month);
for (int day = 1; day <= lengthOfTheMonth; day++) {
for (int weekday = 0; weekday < 7; weekday++) {
String weDay = calender.getDayOfTheWeek(weekday);
this.weekDayName= weDay;
}
String dayOfTheMonth= this.calender.getTwoLetters(day);
monthList.add(this.weekDayName+"|"+dayOfTheMonth.toString()+"|");
}
return monthList;
}
这是我的输出方法。
public String getYearplan(int from, int until) {
if (from <= until) {
for (int i = from; i <= until; i++) {
LinkedList<String> month = buildMonth(i);
this.planlist.add(month);
}
for (LinkedList<String> months: planlist) {
for (String s : months) {
System.out.println(s);
}
}
}
那就是我现在的输出。
January 2016
Sa|01|
Sa|02|
Sa|03|
Sa|04|
Sa|05|
...
February 2016
Sa|01|
Sa|02|
Sa|03|
Sa|04|
Sa|05|
...
我的主要问题我该如何输出这个并排。
^我会更早地使用空格而不是制表符,因为终端制表符宽度有点不可预知,并且对齐很容易中断。 –
您不能每个月都创建一个,然后在一个月内打印所有内容。你将不得不先建立所有的月份。然后,为了并排打印,您需要一个循环来获取所有月份列表的第一个元素,或者月份列表中的第4个元素,然后打印它们;然后获取相同月份列表的第二个元素并打印它们;然后获取相同月份列表的第三个元素并打印它们等等。这涉及到并行处理多个列表,这对于简单的'for(String s:months)'类型语句是无法做到的。 – ajb
@GrzegorzGórkiewicz我非常反对在任何时间段使用标签,因为它们在不同的显示器上行为不同,并且在不同的文本编辑器中有所不同。通过在'printf'或'String.format'中使用类似'%-16s'的东西,你可以得到一个没有标签的效果。 – ajb