我试图在一行中只打印给定字符串的前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 :(得分:1)
但是,字符串的最后部分未打印。
是的,这是正确的 - 因为你的循环条件。你正在迭代(string.length()/5)
次 - 向下舍入。因此,如果字符串有12个字符,则只会迭代两次...省略最后两个字母。
我建议略微区别地解决这个问题 - 摆脱l
和m
变量(我假设您打算在substring
调用中使用 - 您永远不会声明{{1} }或j
)并使用k
循环中的变量。您需要确保不要尝试在字符串末尾使用for
- substring
对此非常方便:
Math.min
答案 1 :(得分: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
答案 2 :(得分:0)
你的变量到处都是。您有i
,j
,k
,l
,m
;其中一些未在您提供的代码中定义。
但你应该只有一个:子串的开头,比如i
。子串的结尾总是多5个:(i + 5)
。然后每个循环增加5个。
答案 3 :(得分: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);
}
}