2013-06-27 72 views
2

我怎樣才能打印金字塔在Java中這樣印刷金字塔中的Java控制檯上

1 
23 
456 
78910 

我當前的代碼如下所示:

public class T { 
    public static void main(String[] args) { 
     int i, j, num = 1; 
     int n = Integer.parseInt(args[0]); 

     for (int i = 1; i <= n; i++) { 
      for (int j = 1; j <= i; j++) { 
       System.out.println(num); 
       num++; 
      } 
      System.out.println(" "); 
     } 
    } 
} 

如果我嘗試這種去除宣佈i & j那麼它顯示出一個數組越界異常 但是'i'&'j'正在產生問題。我的代碼應該是什麼樣子。

+2

你傳遞_any_命令行參數的程序? –

+0

我是新來的編碼先生。所以我不知道你在做什麼關於..請解釋我的函數的命令行參數 – user2502227

+0

您正在閱讀'args [0]'。你期望什麼是它的價值? –

回答

2
int val=1; 
    for(int i=0;i<6;i++){ 
     for(int j=1;j<i;j++){ 
      System.out.print(val); 
      val++; 
     } 
     System.out.print("\n"); 
    } 

初始val等於1。在第一個for循環內i = 0和j從1增加,但是當i = 0時循環不運行。那麼你的第一個值就是1.然後它會指向新的行。

當i = 1時,j仍然等於1秒for循環運行1次並打印2,因爲val有增量(val ++)。當在for循環內j = 2時,它不運行,只打印val的新值(3)。

等,這將工作

+0

huh?需要解釋 –

+0

這段代碼做了伎倆.....我愛你的男人..我只是從我可怕的老師 – user2502227

+2

@ user2502227救我,然而,你從這個答案中學到了什麼嗎? –

0

我想你給線路作爲自己的唯一參數的數量,因此代碼將

public static void main(String[] args) 
{ 
    int lines = Integer.parseInt(args[0]); 
    int num = 1; 
    for (int i = 1; i <= lines; i++) { 
     for (int j = 1; j <= i; j++) { 
      System.out.print(num); 
      num++; 
     } 
     System.out.println(""); 
    } 
} 
2
public static void main(String[] args) { 
    int num = 1; 
    //i is how many numbers per row 
    for(int i = 1; i < 5; i++){ 
     //prints i numbers because j increases from 0 to i, incrementing num each time 
     for(int j = 0; j < i; j++){ 
      System.out.print(num++); 
     } 
     System.out.println(); 
    } 
} 

此代碼將滿足您的需要。

現在,如果您想更好地理解Java並瞭解編譯器爲什麼會在代碼中拋出錯誤,請閱讀。你不應該使用stackoverflow複製粘貼別人的代碼而不理解它。在你的代碼中,你聲明瞭ij兩次。在Java中,你不能兩次聲明一個變量。你首先在int i,j, num = 1;中完成,然後再次在循環for (int i = 1; i <= lines; i++)中進行。你可以通過說for(i = 1; i <= lines; i++)來解決這個問題。請注意0​​在for循環的第二個版本中的排除方式。當申報類型,你可以簡單地在一個賦值給變量for循環,而不是你創建一個新的變量int i = 1

的for循環的語法是:

for(initialization; Boolean_expression; update) 

{ 
    //Statements 
} 

初始化步驟是首先執行,並且只執行一次。這一步允許你聲明和初始化任何循環控制變量。只要出現分號,您無需在此處發表聲明。

對於您收到的數組超出範圍錯誤,您嘗試讀取語句中的命令行參數int n = Integer.parseInt(args[0]);請注意主方法的參數String[] args。這些被稱爲命令行參數,如果您從命令行手動運行程序,則可以傳入這些參數。您正嘗試閱讀args[0],這是在args[]的範圍之外。

換句話說,如果您運行

java MyProgram one two 

然後ARGS包含:

[ 「一」, 「二」]

public static void main(String [] args) { 
    String one = args[0]; //=="one" 
    String two = args[1]; //=="two" 
} 
0
int l=1; 

for (int i=0; i<5; i++) 
    { 
    for (int k=0; k<5-i; k++) 
    { 
     System.out.print(" ");   
    } 
    for (int j=0; j<(i*2)+1; j++) 
    { 
     if(j%2!=0){ 
      System.out.print(l++); 
     }else { 
      System.out.print(" "); 
     }   
    } 
    System.out.println(""); 
    } 
0
public static void pyramid(int max) { 
    int num = 1; 
    max = 4; 
    for (int row = 0; row < max; row++) { 
     for (int column = 0; column < max; column++) 
      System.out.print(column <= row ? num++ : " "); 
     System.out.println(); 
    }  
}