Java 我的循环赢了';不执行?
我需要一个“for”循环来遍历具有用户定义的子字符串长度的单词的长度,以获得单词的所有子字符串的结尾您可以将Java 我的循环赢了';不执行?,java,Java,我需要一个“for”循环来遍历具有用户定义的子字符串长度的单词的长度,以获得单词的所有子字符串的结尾您可以将for更改为: Enter a string: anthropomorphization Enter substring length: 3 "ant" "nth" "thr" "hro" "rop" "opo" "pom" "omo" "mor" "orp" "rph" "phi" "hiz" "iza" "zat" "ati" "tio" "i
for更改为:
Enter a string: anthropomorphization
Enter substring length: 3
"ant"
"nth"
"thr"
"hro"
"rop"
"opo"
"pom"
"omo"
"mor"
"orp"
"rph"
"phi"
"hiz"
"iza"
"zat"
"ati"
"tio"
"ion"
for(int i=0;i
这样做的目的是从第一个字符到最后一个字符的第三个字符进行迭代,并且始终子字符串
-从一个索引到另一个索引+子字符串
此代码很复杂,这就是为什么子字符串会重复每个循环的原因
for (int i = 0; i < length - sub + 1; i++){
System.out.println(line.substring(i, i + sub));
}
在递增子对象中使用+
sub= + sub;
for(int i=0;i
解决方案:
注意循环的配置方式,它几乎是正确的。
您的解决方案试图对循环过于巧妙,并且过于复杂
还要注意正确的格式如何使代码更易于阅读
值得注意的是,我们不循环到字符串的完整结尾
重要:
我们在
处停止,因为我们将索引到字符串的末尾,如果我们继续,将得到一个异常
Enter a string: anthropomorphization
Enter substring length: 3
ant
nth
thr
hro
rop
opo
pom
omo
mor
orp
rph
phi
hiz
iza
zat
ati
tio
ion
以及:
看起来您在循环中使用的是=+
,而不是+=
。请尝试在调试器中逐步解决问题,以捕获简单的打字错误…为什么要以大量HTML的形式发布Java代码?因为我更容易从语法高亮显示中发布它。@44hz答案已发布供您接受第一个索引点在何处被指定给下一个值。第二次不会是(1,i+sub),因为我在条件中只增加了一次,或者我遗漏了什么。你遗漏了什么。这里你只需要递增i
,而for
loop就是为你做的。哇,我在厨房里,它终于击中了我,因为你从长度中减去了,这就把它全部拉了出来together@44hz字体很高兴我能帮忙。
for(int i=0; i< length; i = sub){
System.out.println(line.substring(i,sub));
sub++;
}
public static void main(String[] args) {
String line;
int sub, length;
Scanner kb = new Scanner(System.in);
System.out.print("Enter a string: ");
line = kb.nextLine();
System.out.print("Enter substring length: ");
sub = kb.nextInt();
length = line.length();
for (int i = 0 ; i < length - (sub - 1) ; i++) { // no need to loop it to end of string length
if (i + sub <= length)
System.out.println(line.substring(i, i + sub));
}
}
Enter a string: anthropomorphization
Enter substring length: 3
ant
nth
thr
hro
rop
opo
pom
omo
mor
orp
rph
phi
hiz
iza
zat
ati
tio
ion
public static void main(final String[] args)
{
final Scanner kb = new Scanner(System.in);
System.out.print("Enter a string: ");
final String line = kb.nextLine();
System.out.print("Enter substring length: ");
final int sub = kb.nextInt();
for (int i = 0; i < line.length() - (sub-1); i++)
{
System.out.println(line.substring(i,i+sub));
}
// abcdefghijklmnopqrstuvwxyz
}
Enter a string: abcdefghijklmnopqrstuvwxyz
Enter substring length: 3
abc
bcd
cde
def
efg
fgh
ghi
hij
ijk
jkl
klm
lmn
mno
nop
opq
pqr
qrs
rst
stu
tuv
uvw
vwx
wxy
xyz
Enter a string: abcdefghijklmnopqrstuvwxyz
Enter substring length: 5
abcde
bcdef
cdefg
defgh
efghi
fghij
ghijk
hijkl
ijklm
jklmn
klmno
lmnop
mnopq
nopqr
opqrs
pqrst
qrstu
rstuv
stuvw
tuvwx
uvwxy
vwxyz