使用for循环更新总和(例如,空格=空格+2)

时间:2017-09-04 18:24:12

标签: java for-loop

好的,我正在制作一个程序,它也可以制作垂直线,水平线,对角线!我有点困惑我的一个输出没有任何意义。

所以我的psudocode是这样的:

  //enter a char
  //enter a number that will determine how long the line is
  //define with easyreader what type of line it will be (hori, vert, diag)
  //the idea of making the diag lines was this...

  @
  (two spaces) @
  (four spaces) @
  (six spaces)   @

  //we could use the sum spaces = spaces + 2; to keep on calculating what 
  //the previous spaces was

代码是:

  class starter {

    public static void main(String args[])
    {   
        System.out.print("What char would you like? ");
        EasyReader sym = new EasyReader();
        String chars = sym.readWord();
        System.out.print("How long would you like it to be? ");
        int nums = sym.readInt();
        System.out.print("Diag, Vert, or Hori? ");
        //you want to read the __ varible, not the sym.readX()
        String line = sym.readWord();

        System.out.println("");
        System.out.println("");

        if(line.equals("Hori")){
            for(int x = 0; x < nums; x++){
                System.out.print(chars + " ");  
            }
        }

        else if(line.equals("Vert")){
            for(int y = 0; y < nums; y++){
                System.out.println(chars + " ");
            }
        }

        else{
            for(int xy = 0; xy < nums; xy++){
                for(int spaces = 0; spaces < nums; spaces++){
                spaces = spaces + 2;
                System.out.print(spaces + " ");
                System.out.println(chars);
                }
            }
        }

    }
 }

在底部,您将看到一个名为xy的for循环,它将读取这些行的长度。在那下for循环将控制空间。但是,由于某种原因,总和未正确更新。输出总是:

 2 (char)
 5 (char)
 8 (char)
 2 (char)
 5 (char)
 8 (char)
 ...

输出应为:

 2 (char)
 4 (char)
 8 (char)
 ...

编辑********** 因为我现在需要帮助,所以改变这里的好处就是一个例子(所以我不必在评论中解释很多)

示例:如果用户将他想要的线路多达5个单位。有两个for循环,一个控制他想要多少个空格,一个控制打印出多少个字符,然后输出为2,4,6,8,10。

3 个答案:

答案 0 :(得分:3)

for循环语句中,您说在每次迭代后将spaces增加一个&#39; (spaces++):

for(int spaces = 0; spaces < nums; spaces++){

在你的循环体中,你还要求将它增加2:

spaces = spaces + 2;

所以每次迭代都会增加3。

顺便说一下,你的嵌套循环似乎有问题(如果我理解正确的意图)。如果外部循环(循环遍历xy)在每次迭代中绘制一条线,那么内部循环(应该为当前行输出缩进)必须由xy限制(乘以2)而不是nums。我这样写:

for (int xy = 0; xy < nums; xy++) {
    for (int spaces = 0; spaces < xy*2; spaces += 2) {
        System.out.print(" ");
    }
    System.out.println(chars);
}

答案 1 :(得分:0)

因为每次都要向空格添加3

for(int spaces = 0; spaces < nums; spaces++){
    spaces = spaces + 2;

空格++ 空格+ = 1

空格=空格+ 2; 空格+ = 2

答案 2 :(得分:0)

实际上问题在于这一部分:

for(int spaces = 0; spaces < nums; spaces++){
      spaces = spaces + 2;
      System.out.print(spaces + " ");
      System.out.println(chars);
}

程序启动时我们有spaces = 0

然后这部分将运行spaces =spaces + 2

现在spaces等于2,所以我们有spaces = 2

程序打印2spaces使用1部分spaces++增加spaces

现在3等于spaces=3,这意味着spaces = spaces + 2

之后该行将运行spaces

因此5的值变为2 5 8 11 14 ....

如果我们永远这样做,我们将拥有这一系列数字:

spaces

实际上这是因为我们在每次迭代中将3递增for (int xy = 0; xy < nums; xy++) { for(int spaces = 0; spaces < xy*2; spaces += 2) System.out.print(spaces + " "); System.out.println(chars); }

如果您修改此表单中的代码,问题就会解决:

add 0 = id
add x = add(x-1) . (+1)