繁体   English   中英

在一行中仅打印字符串的前5个字符

[英]Printing only the first 5 characters of a string in one line

我试图在一行中仅打印给定字符串的前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

但是,字符串的最后部分没有被打印。

但是,字符串的最后部分没有被打印。

是的,没错-由于您的循环条件。 您正在迭代(string.length()/5)次-四舍五入。 因此,如果字符串包含12个字符,则只需迭代两次,就省去了最后两个字母。

我建议解决这个问题略有不同-摆脱lm变量(我假设您打算在substring调用中使用-永远不要声明jk ),而应在for循环中使用该变量。 但是,您需要确保不要尝试在substring末尾使用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);
}

根据您的问题,我了解的是,您需要输出

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

您的变量无处不在。 你有ijklm ; 其中一些未在您提供的代码中定义。

但是您应该只有一个:子串的开头,说i 子字符串的结尾总是多5个: (i + 5) 然后每个循环将其增加5。

简单的递归方法

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);
        }

    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM