希望我的循环回去

时间:2018-07-12 09:48:14

标签: java for-loop

我想得到什么:

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

4 个答案:

答案 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。