2011-05-27 32 views
0

我们假设为项目编写日历。我正在使用一个数组来跟踪一个月中有多少天,并获得一个长度与数组索引值相等的数字列表。然后使用循环填充String,直到该循环等于该索引的值。初学Java - 使用子字符串()将长字符串分成单独的行

字符串被加载到我们的教授给出的文本形状中。我想显示每个由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; 
} 

其馈送到这个这个方法,其origanlly有与手动只是数形式砑光“\ 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

嗨kitchen_duty ...你想要得到一个单一的字符串的子串,例如,如果你有字符串像“第一第二第三”,你想三个字符串“第一”,“第二”,“第三”....是你想要什么...我读你的问题,但无法理解它 – koool 2011-05-27 23:08:29

+0

我知道你是一个初学者,但这个代码几乎无法理解。介意清理一下?对我来说,你让这比自己需要的要困难得多。另外,请查看String的[split](http://download.oracle.com/javase/6/docs/api/java/lang/String.html#split%28java.lang.String%29)方法。 – mre 2011-05-27 23:11:13

+0

我建议不要在这里使用'substring'。没有它可以设计得更干净。 – 2011-05-27 23:11:30

回答

0

摆脱所有这些子()和分裂的()调用该字符串分割和添加的toString

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

内循环()。

+0

好的,这就是我想要它做的事情......看起来很容易,而且我让它变得如此困难。 – 2011-05-27 23:40:05

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天,2天,3天......在定期日历。

快乐编码。

相关问题