三角形每次移动1次

时间:2014-02-04 23:53:16

标签: java

import java.util.Scanner;

public class Testpyramid {
   public static void main(String[] args) {
      // TODO code application logic here
      int i = 0, j = 0, g = 0, n = 0;
      while (i >= 0) {
         Scanner input = new Scanner(System.in);
         System.out.println("Enter an odd number:");
         i = input.nextInt();
         if ((i % 2) == 0) {
            System.out.println("Number not valid, please enter an odd number: ");
         } else {
            if ((i % 1) == 0) {
               for (; i > 0; i--) {
                  for (j = 1; j <= n; j++) {
                     System.out.print(" ");
                  }
                  for (int k = i; k > 0; k--) {
                     System.out.print("* ");
                  }
                  System.out.println();
                  n++;
               }
            }
            System.out.println("Enter 1 to restart or 2 to exit:");
            g = input.nextInt();
            if ((g > 1) && (g < 3)) {
               break;
            } else {
               if ((g < 1) || (g > 3)) {
                  System.out.println("Must enter 1 or 2");
               }
            }
         }
      }
   }
}

在输入结束时,我询问用户是否想再试一次。当我再次输入数字时,输出由于某种原因将三角形向右移动。我整天都在研究这个项目,所有这些都是困扰我的。

2 个答案:

答案 0 :(得分:1)

获得三角形的高度后,将n重置为零。

// ...
Scanner input = new Scanner(System.in);
System.out.println("Enter an odd number:");
i = input.nextInt();
n = 0;                                     // <- Here
// ...

答案 1 :(得分:1)

您必须在n循环的开头重置while值。

while (i >= 0) {
   n = 0; 
   ...
}