好的,我正在制作一个程序,它也可以制作垂直线,水平线,对角线!我有点困惑我的一个输出没有任何意义。
所以我的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。
答案 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
程序打印2
,spaces
使用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)