2013-10-08 88 views
0

我試圖打印一行中給定字符串的前5個字符。我的問題是整個字符串沒有被打印。部分結局正在被切斷。在一行中只打印一個字符串的前5個字符

int l = 0; 
     int m = 5; 
     for(int i = 0; i < (string.length()/5) ; i++) 
     { 
      System.out.println(string.substring(j,k)); 
      l = m; 
      m = m + 5; 

     } 

鑑於string = "Hello world, my name is something which you want to" 結果會是這樣的:

Hello 
worl 
d, my 

但是,並沒有被打印字符串的最後部分。

+0

什麼是'j'和'k' ..? – user2339071

+0

你需要考慮到最後,你可能不會有5個字符...... – MadProgrammer

回答

1

從你的問題我理解是, 你需要輸出如下

Hello 

worl 

d, my 

name 

is so 

String str="Hello world, my name is something which you want to"; 
    for(int i=0;i<str.length();i++) 
    { 
     if(i%5==0 && i!=0) 
     { 
      System.out.println(""); 
     } 
     System.out.print(str.charAt(i)); 


    } 

增加一個方法

String str="Hello world, my name is something which you want to"; 
    for(int i=0,j=0;i<str.length();) 
    { 
     if(j<str.length() && (str.length()-j)>5) 
     {j=i+5;} 
     else 
     {j=str.length();} 
     System.out.println(str.substring(i,j)); 
     i+=5; 
    } 

輸出:

Hello 

worl 

d, my 

name 

is s 

ometh 

ing w 

hich 

you w 

ant t 

o 
+0

編輯爲更好的格式,您的答案效果很好,所以+ +1 upvote – SpringLearner

+0

這感覺就像一個非常迂迴的解決方案 - 有更簡單的方法,國際海事組織。沒有必要一次處理一個角色。 –

+0

是的,你是正確的下面一個也更好我認爲\t String str =「你好世界,我的名字是你想要的東西」; \t \t for(int i = 0,j = 0; i 5) \t \t \t {J = + 5;} \t \t \t別的 \t \t \t {J = str.length();} \t \t \t的System.out.println(str.substring(I,J)); \t \t \t i + = 5; \t \t} –

0

您的變量已遍佈各處。您有i,j,k,l,m;其中一些未在您所提供的代碼中定義。

但是你應該只有一個:子串開頭,比如i。子串末尾總是5個:(i + 5)。然後每增加5個循環。

1

但是,字符串的最後部分未被打印。

是的,沒錯 - 因爲你的循環條件。你正在迭代(string.length()/5)次 - 這一輪下降。因此,如果字符串有12個字符,則只會迭代兩次...忽略最後兩個字母。

我建議解決這個略有不同 - 擺脫lm變量(我假設你的意思是在你的substring調用中使用 - 你永遠不聲明jk)和for循環使用變量來代替。你需要確保你不要嘗試使用substring過去雖然字符串的結尾 - Math.min因爲這是得心應手:

for (int sectionStart = 0; sectionStart < string.length(); sectionStart += 5) { 
    int sectionEnd = Math.min(string.length(), sectionStart + 5); 
    System.out.println(string.substring(sectionStart, sectionEnd); 
} 
0

簡單的遞歸方法

void test(String t){ 

     if(t.length() > 4){ 
     String o = t.substring(0,5); 
     System.out.println(o); 
     String x = t.substring(5,t.length()); 
     test(x); 
     } 
     else{ 
      System.out.println(t); 
     } 

    } 
+0

爲什麼要遞歸?我看不出有什麼理由要這樣做,而且比循環國際海事組織更復雜。 –