我真的需要一些幫助,我從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