我的输出未正确排列。顶部是我的目标,而我的输出是底部。对于此特定示例,宽度等于8。如何为for循环创建条件?
我是一名初学者,并且还没有学习离散数学。我相信我的问题出现在第三个for循环中。我希望我的间距为0、2、4等。如何解决这些类型的问题?
预期输出:
/\
/ \
/ \
/ \
________
代码:
public static void methodName(int width) {
for(int a = 0; a < width / 2 + 1; a++ ) {
for(int b = width - 2; b > a; a--) {
System.out.print(" ");
}
System.out.print("/");
for(int c = 0; c < a; c++) {
System.out.print(" ");
}
System.out.println("\\");
}
for(int d = 0; d < width; d++) {
System.out.print("_");
}
System.out.println();
}
实际输出:
/\
/ \
/ \
/ \
/ \
________
答案 0 :(得分:1)
我应该如何解决这些类型的问题?
我建议通过在一张纸上,白板上或使用调试器逐步执行代码来解决问题。查看您的实际输出与预期输出有何不同。绘制输出或编写代码永远不会受到伤害。
如何?
为width
取一个值并将其插入。逐步遍历代码,一次一行,并跟踪所有局部变量(如a,b等)。最终,您将看到代码您的预期输出与实际输出不同的地方。从这里开始应该很自我解释。
注意:我认为这是家庭作业,因此我不想为 你。
答案 1 :(得分:1)
工作代码:
public static void methodName(int width){
for(int a = 0; a < width / 2 + 1; a++ ) {
for(int b =0; b < width/2-a;b++) {//get the middle - our postion
System.out.print(" ");
}
System.out.print("/");
for(int c = 0; c < (width-(width-a))*2; c++) {//Just the opposite
System.out.print(" ");
}
System.out.println("\\");
}
for(int d = 0; d < width+2-width%2; d++) {//odd or even numbers has /2 different
System.out.print("_");
}
System.out.println();
}
(另一项建议是在调试时使用“ |”而不是“”,这样更容易看到和理解正在发生的事情)
答案 2 :(得分:0)
看看生成三角形的两个边有助于剩余部分的自我,并调试程序来解决它。
for(int i=WIDTH; i>=0;i--) {
for(int j=0;j<=i;j++) {
System.out.print(" ");
}
System.out.print("/");
for(int k=i;k<WIDTH;k++) {
System.out.print(" ");
}
System.out.println("\\");
}
答案 3 :(得分:0)
尝试将问题分成小块,并逐个分析它们
查看结果并尝试找到与您期望的不同。是否有错误模式?哪个部分失败,哪个部分工作正常?
尝试将结果的各部分(3行和2个空格)连接到生成它们的代码。
修复您发现错误的第一部分,然后转到下一个
在您的情况下:
左侧空白看起来不错
左行看起来不错
中间的空格似乎是错误的。
右行直线下降而不是向右移动(暂时忽略,首先修复3,然后再次查看)
...
(由于它可能只是“功课”而无法提供完整的解决方案