链表<链表<字符串>&GT;并排输出元素?

时间:2017-06-08 18:58:22

标签: java linked-list printf 2d

我有问题。我不能并排输出我的LinkedList。我问了这个问题,但遗憾的是我的老师告诉我不要改变方法头或使用像calender这样的java库。我有很多建议使用它或改变方法头。我取决于成绩,老师非常严格。

必须以某种方式从左到右输出2维链表。我可以想象一下,如果来自LinkedList的Generic中的元素被输出,那么请进一步向右移动。

我对这个想法的实施感到沮丧。我希望你能帮助我。

这里我只返回一个字符串但是为了测试我输出了要添加的字符串。

public String getYearplan(int from, int until) {
    if (from <= until) {
        for (int i = from; i <= until; i++) {
            LinkedList<String> buildedMonth = buildMonth(i);
            this.planlist.add(buildedMonth);
        }
        for (LinkedList<String> months: planlist) {
            for (String s : months) {
                System.out.printf("%24s",s);
            }
     }
}

` 在这个方法buildMonth中,我正在构建Month并返回一个LinkedList,由this.planlist添加。

 public LinkedList<String> buildMonth(int month) {
            LinkedList<String> monthList = new LinkedList<>();
            StringBuilder sb = new StringBuilder();
            String header = this.monthname[month] + " " + this.year;
            sb.append(header);

            int lengthOfMonth = calender.getLengthOfMonth(jahr, monat);

            for (int day = 1; day <= lengthOfMonth; day++) {


                for (int weekday = 0; weekday < 7; weekday++) {
                    String weDay = kalender.getDayOfWeek(weekday);
                    this.weekDayName = weDay;
                }
                this.daynumber++;
                String dayOfMonth = this.kalender.getTwoLetter(day);

                /*
                  modus = -1 is calender without holiday
                */
               if (this.modus == -1) {
                    sb.append("\n"+this.weekDayName+"|"+dayOfMonth.toString()+"|\t\t|"+daynumber);
                }
            }
            monthList.add(sb.toString());

            return monthList;
        }`

这是我的输出,我得到的一切都没有一些东西,但它很容易修复。主要的问题是我无法将它并排输出。奇怪的是,二月的标题向左移动而不是其他元素。

    January 2017
    Sa|01|      |1
    Sa|02|      |2
    Sa|03|      |3
    Sa|04|      |4
    Sa|05|      |5
    Sa|06|      |6
    Sa|07|      |7
    Sa|08|      |8
    Sa|09|      |9
    Sa|10|      |10
    Sa|11|      |11
    Sa|12|      |12
    Sa|13|      |13
    Sa|14|      |14
    Sa|15|      |15
    Sa|16|      |16
    Sa|17|      |17
    Sa|18|      |18
    Sa|19|      |19
    Sa|20|      |20
    Sa|21|      |21
    Sa|22|      |22
    Sa|23|      |23
    Sa|24|      |24
    Sa|25|      |25
    Sa|26|      |26
    Sa|27|      |27
    Sa|28|      |28
    Sa|29|      |29
    Sa|30|      |30
    Sa|31|      |31February 2017
    Sa|01|      |32
    Sa|02|      |33
    Sa|03|      |34
    Sa|04|      |35
    Sa|05|      |36
    Sa|06|      |37
    Sa|07|      |38
    Sa|08|      |39
    Sa|09|      |40
    Sa|10|      |41
    Sa|11|      |42
    Sa|12|      |43
    Sa|13|      |44
    Sa|14|      |45
    Sa|15|      |46
    Sa|16|      |47
    Sa|17|      |48
    Sa|18|      |49
    Sa|19|      |50
    Sa|20|      |51
    Sa|21|      |52
    Sa|22|      |53
    Sa|23|      |54
    Sa|24|      |55
    Sa|25|      |56
    Sa|26|      |57
    Sa|27|      |58
    Sa|28|      |59`

这就是我试图实现的输出。

  January 2017            February 2017           
  So|01|            |1    Mi|01|            |32  
  Mo|02|            |2    Do|02|            |33   
  Di|03|            |3    Fr|03|            |34   
  Mi|04|            |4    Sa|04|            |35    
  Do|05|            |5    So|05|            |36    
  Fr|06|            |6    Mo|06|            |37    

我希望它不多,但我想这次明确提出我的问题。 最好的祝福 Maskulin

1 个答案:

答案 0 :(得分:1)

在比我想象的那些月份更高维度的日子里进行迭代。这样,您可以在每个月的第二天进行迭代并列出所有内容。

以下内容尚未经过测试,但我希望这个概念能够得到体现。

    public String getYearplan(int from, int until) {
        if (from <= until) {
            for (int i = from; i <= until; i++) {
                LinkedList<String> buildedMonth = buildMonth(i);
                this.planlist.add(buildedMonth);
            }
            for (int day = 0; day < 31; day++){
                for (LinkedList<String> month: planlist) {
                    try{
                        System.out.print(month[day]);
                    } catch (Exception e) {
                        System.out.print("\t")
                    }
                }
            }
    }