2013-10-08 68 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

为什么要递归?我看不出有什么理由要这样做,而且比循环国际海事组织更复杂。 –