我想得到什么:
Welk woord wil je Af/Opbouwen?
MARSEPEIN
MARSEPEIN
MARSEPEI
MARSEPE
MARSEP
MARSE
MARS
MAR
MA
M
MA
MAR
MARS
MARSE
MARSEP
MARSEPE
MARSEPEI
MARSEPEIN
我现在得到了什么:
welk woord wil je op en af?
marsepein
marsepein
marsepei
marsepe
marsep
marse
mars
mar
ma
m
m
ma
mar
mars
marse
marsep
marsepe
marsepei
marsepein
但是我程序的问题是重定向之间存在空间。还有其他更好的方法吗?
我的代码:
System.out.println("welk woord wil je op en af?");
String woord = s.next();
for (int i = woord.length(); i >= 0; i--) {
System.out.println(woord.substring(0, i));
if (i == 0) {
for (int j = 0; j <= woord.length(); j++) {
System.out.println(woord.substring(0, j));
}
}
}
答案 0 :(得分:3)
从长度到1的循环
for (int i = woord.length(); i >= 1; i--) {
System.out.println(woord.substring(0, i));
}
然后从2循环回到长度:
for (int i = 2; i <= woord.length(); i++) {
System.out.println(woord.substring(0, i));
}
答案 1 :(得分:0)
System.out.println("welk woord wil je op en af?");
String woord = s.next();
for (int i = woord.length(); i > 0; i--) {
System.out.println(woord.substring(0, i));
if (i == 1) {
for (int j = 2; j <= woord.length(); j++) {
System.out.println(woord.substring(0, j));
}
}
}
我已经本质上更改了循环变量值。
制作i>0
检查i==1
并初始化j=2
答案 2 :(得分:0)
更改for循环中的条件
for (int i = woord.length(); i > 0; i--) {
System.out.println(woord.substring(0, i));
if (i == ) {
for (int j = 2; j <= woord.length(); j++) {
System.out.println(woord.substring(0, j));
}
}
}
答案 3 :(得分:0)
您实际上不需要两个循环。
这是一个可能的解决方案:
for (int i = 0; i < 2*woord.length() - 1; i++) {
int endIndex = i < woord.length() ? woord.length() - i : i - woord.length() + 2;
System.out.println(woord.substring(0, endIndex));
}
循环始终运行2 * length - 1
次。在第一阶段,它通过执行woord.length() - i
沿字符串的长度向左移动,并且一旦到达第一个字符即i < woord.length()
,它就会向右移动。由于您不希望使用空字符串,并且第一个字符打印两次,代码的+ 2
部分会跳过这些sysout。