我们假设为项目编写日历。我正在使用一个数组来跟踪一个月中有多少天,并得到一个长数列表,等于该数组索引的值。然后,我使用循环填充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++;
}
}
答案 0 :(得分:1)
我建议不要在这里使用substring
。没有它,这可以设计得更清洁。这是我的
建议不使用substring
。 这主要是你所拥有的,但我希望在重新编写方法时可以看出不需要substring
。
要绘制日历,需要两件事:开始日期和月中的日期(或结束日期,即月份中的日期的开始日期)。
现在,绘制日历的过程就是绘制网格的过程。想象一下,每个单元格都标有(x, y)
,左上角为(0,0)
,x
代表星期几(星期日为0,星期六为6)。
找到最初的(x, y)
。 y
将始终为0(第一行),但x
将根据一周的开始日期而有所不同。例如,(2,0)
表示从星期二开始的月份。
虽然没有放置足够的日期,但在单元格(x, y)
中放置另一天,为其提供适当的每日价值并提前(x, y)
,就像第1天,第1天一样2,第3天......在常规日历上。
快乐的编码。
答案 1 :(得分:0)
删除所有substring()和split()调用并添加
if((i + 1) % 7 == 0)subLine += "\n";
在toString()循环中。