2011-05-27 30 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天......在定期日曆。

快樂編碼。

相關問題