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

初学者Java-使用substring()将长字符串分成单独的行,java,Java,我们打算为一个项目写一份日历。我使用一个数组来跟踪一个月有多少天,并得到一长串数字,这些数字等于数组索引的值。然后使用循环填充字符串,直到该循环等于该索引的值 字符串被加载到一个textshape中,这是我们的教授给出的。我想将substring()生成的每个文本行显示在一个单独的行中。我试图从更高的索引(30,59)开始,但它返回一个错误b/c我的初始字符串不够长 所以我想做的是把长长的数字列表分成几行。我的一个同学说用子串。一般来说,它确实有效,但只会给我第一行 这是生成我的字符串的方法

我们打算为一个项目写一份日历。我使用一个数组来跟踪一个月有多少天,并得到一长串数字,这些数字等于数组索引的值。然后使用循环填充字符串,直到该循环等于该索引的值

字符串被加载到一个textshape中,这是我们的教授给出的。我想将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;
}

摆脱所有那些substring()和split()调用并添加

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

在toString()的循环中。

我建议不要在这里使用
子字符串。如果没有它,它可以设计得更干净。这是我的
不使用
子字符串的建议这主要是您所拥有的,但我希望在重新迭代该方法时,可以看到不需要
子字符串。

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

现在,绘制日历的过程就是绘制网格的过程。假设每个单元格都用
(x,y)
标识,左上角是
(0,0)
,而
x
表示一周中的某一天(如果周日是0,周六是6)

  • 查找首字母
    (x,y)
    y
    始终为0(第一行),但
    x
    将根据一周的开始日期而变化。例如,
    (2,0)
    表示从周二开始的月份

  • 当没有足够的天数时,在单元格中放置另一天
    (x,y)
    给它一个适当的月值,并提前
    (x,y)
    ,就像第1天、第2天、第3天一样。。。在常规日历上


  • 快乐编码。

    你好,厨房值班。。。您是否尝试获取单个字符串的子字符串?例如,如果您有类似“first second third”的字符串,您是否想要三个字符串“first”、“second”、“third”。。。。这就是你想要的吗。。。我读了你的问题,但不明白。我知道你是个初学者,但这段代码几乎让人无法理解。介意清理一下吗?对我来说,你让事情变得更难了。另外,看看String的方法。我建议不要在这里使用
    substring
    。我同意,下面的海报建议我在I%7==0时使用if语句将“\n”注入代码。这让我至少走了一段路,现在我只需要把开始日期弄对并清理干净。好的,这就是我想要它做的。。。看起来很容易,但我让它变得很难。
    if((i + 1) % 7 == 0)subLine += "\n";