初学Java - 使用substring()将长字符串分成单独的行

时间:2011-05-27 23:02:48

标签: java

我们假设为项目编写日历。我正在使用一个数组来跟踪一个月中有多少天,并得到一个长数列表,等于该数组索引的值。然后,我使用循环填充String,直到该循环等于该索引的值。

字符串被加载到texthape中,由我们的教授提供。我想将substring()生成的每个文本行显示在一个单独的行中。我试图从较高的索引(30,59)开始,但它返回错误b / c我的初始字符串不够长。

所以我想做的就是将这长长的数字列表分成不同的行。我的同学说要使用子串。它确实有效,但通常只给我第一行。

这是生成我的字符串的方法。

    public String toString() {

    monthPlusOne = month + 1;
    for (int i = 0; i < monthsArray[monthPlusOne]; i++) {
        String temp;
        //temp = "" + i;
        subLine = subLine + (i+1) + " ";

        }
    totalLine = subLine;


    String output = monthText + " " + year + " \n "
            + "Su Mo Tu We Th Fr Sa\n" + totalLine;

    return output;
}

它提供了这种方法,该方法最初只有数字形式的压光机,手动“\ n”插入其中。当字符串找到“\ n”

时会分裂
public static void displayCalendar() {
    String s = calendar.toString().substring(30);

    // extract all of the lines in s
    // split s on \n
    String[] lines = s.split("\n");
    int index = 0;
    for (String line : lines) {
        t[index].setText(line);
        index++;
    }
}

2 个答案:

答案 0 :(得分:1)

我建议不要在这里使用substring。没有它,这可以设计得更清洁。这是我的 建议不使用substring这主要是你所拥有的,但我希望在重新编写方法时可以看出不需要substring

要绘制日历,需要两件事:开始日期和月中的日期(或结束日期,即月份中的日期的开始日期)。

现在,绘制日历的过程就是绘制网格的过程。想象一下,每个单元格都标有(x, y),左上角为(0,0)x代表星期几(星期日为0,星期六为6)。

  1. 找到最初的(x, y)y将始终为0(第一行),但x将根据一周的开始日期而有所不同。例如,(2,0)表示从星期二开始的月份。

  2. 虽然没有放置足够的日期,但在单元格(x, y)中放置另一天,为其提供适当的每日价值并提前(x, y),就像第1天,第1天一样2,第3天......在常规日历上。

  3. 快乐的编码。

答案 1 :(得分:0)

删除所有substring()和split()调用并添加

if((i + 1) % 7 == 0)subLine += "\n";

在toString()循环中。