开发嵌套的for循环时,如何确定要使用的条件?

时间:2019-04-03 13:09:21

标签: java

我的输出未正确排列。顶部是我的目标,而我的输出是底部。对于此特定示例,宽度等于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();
}

实际输出:

       /\
      / \
     /  \
    /   \
   /    \
 ________

4 个答案:

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

尝试将问题分成小块,并逐个分析它们

  1. 查看结果并尝试找到与您期望的不同。是否有错误模式?哪个部分失败,哪个部分工作正常?

  2. 尝试将结果的各部分(3行和2个空格)连接到生成它们的代码。

  3. 修复您发现错误的第一部分,然后转到下一个

在您的情况下:

  1. 左侧空白看起来不错

  2. 左行看起来不错

  3. 中间的空格似乎是错误的。

  4. 右行直线下降而不是向右移动(暂时忽略,首先修复3,然后再次查看)

...

(由于它可能只是“功课”而无法提供完整的解决方案