2017-09-19 109 views
-4

所以我會盡可能具體,因爲我可以在這裏。我的實驗室需要一個Java控制檯應用程序,用戶可以輸入1到9之間的任意數字。然後,計算機將打印每個數字三角形的平方,並且三角形必須在屏幕右側對齊。這裏是例子:三角形的方形數字java

  1 
     4 1 
    9 4 1 
16 9 4 1. 

這裏是我的代碼至今:

import java.util.Scanner; 

public class Triangle { 

    public static void main(String[] args) { 
     Scanner input = new Scanner(System.in); 
     System.out.println("Please enter a number between 1 and 9 inclusive:"); 
     int n = input.nextInt(); 
     for (int i = 1 ; i <=n; i++) { 
      for (int j = n-i; j >=1; j--) { 
       System.out.print(" "); 
      } 
      for (int k = i; k <=i; k++) { 
       System.out.print(" " + i * i); 
      } 
      System.out.println(" "); 
     } 
    } 
} 

,這裏是我的輸出:

  1 
     4 
    9 
16 

我在這裏的問題是,我可以重複每個號碼每行並完全填充三角形,但我無法弄清楚如何在不寫入一百萬個嵌套循環的情況下打印每個先前計數的sqrt。 任何幫助,我可以得到將不勝感激。

回答

0

只有第二內環需要調整一點點(在大膽變化):

for (int k = i; k >= 1; k--) { 
    System.out.printf(" %2d", k * k); 
}

第一內循環用於縮進運行n-i次,因此第二個內循環必須執行其餘的操作:i..1

而且您必須打印內循環變量k的平方而不是外循環變量i(它在內循環中不會更改)。

0

的問題是在對於第二環路

 for (int k = i; k <=i; k++) { 

環路限制您初始化ķ,然後停止循環時K>我。這隻能在「標準」增量下執行一次。您需要運行ķ到該行的末尾:

 for (int k = i; k <=n; k++) { 
0

我不得不在外循環之前調整並增加一些增量變量,並在外循環中以及從內循環的每個循環的總計數和增量中減去。

public static void main(String[] args) { 
    Scanner input = new Scanner(System.in); 
    System.out.println("Please enter a number between 1 and 9 inclusive:"); 
    int n = input.nextInt(); 
    int num = 0, temp = 0; 
    for (int i = 1 ; i <=n; i++) { 
     int l = 0; 
     num++; 
     temp = num * num; 
      for (int j = n-i; j >=1; j--) { 
      System.out.print(" "); 
      } 
      for (int k = 1; k <=i; k++) { 


      System.out.print(" " + temp); 

      l++; 
      temp = i -l; 
      temp = (int)Math.pow(temp, 2); 

         } 

      System.out.println(" "); 

    } 






    } 

}