2014-04-24 70 views
2

模式應該是這樣的:在一個循環中創建一個數字模式

12345 
22345 
33345 
44445 
55555 

我已經嘗試:

import java.io.*; 
class Pattern 
{ 
    void display() 
    { 
     int i=0,k; 
     for(i=1;i<=5;i++) 
     { 
      for(k=1;k<=5;k++) 
      { 
       System.out.print(i+" "); 
      } 
      System.out.println(); 
     } 
    }  
} 
+6

...發生了什麼/不發生/爆炸? –

回答

1

試試這個:

void display() 
{ 
    int i=0,k; 
    for(i=1;i<=5;i++) 
    { 
     for(k=1;k<=5;k++) 
     { 
      if (k < i) { 
       System.out.print(i); 
      } else { 
       System.out.print(k); 
      } 
     } 
     System.out.println(); 
    } 
} 

你的模式是依賴於行號i

  1. 行n應該打印n,n次
  2. 使用以n開始的incresing整數填充行的剩餘部分,直到行的長度/最大行數。

你可以概括它使圖案更具有可讀性:

void display(int dimension) 
{ 
    int lineNumber = 0, linePosition = 0; 
    int numberOfLines = dimension, numberOfCharactersPerLine = dimension; 

    for(lineNumber =1;lineNumber<=numberOfLines ; lineNumber++) 
    { 
     for(linePosition = 1;linePosition <= numberOfCharactersPerLine ;linePosition++) 
     { 
      if (linePosition < lineNumber) { 
       System.out.print(lineNumber); 
      } else { 
       System.out.print(linePosition); 
      } 
     } 
     System.out.println(); 
    } 
} 

在這裏我們看到有明確的命名變量的說明。如果linePosition(我們決定打印的行中的當前字符)小於行號,我們應該打印行號,否則打印字符位置。

這可能是更好的想象通過將它描繪成一個帶有座標的二維矩陣,然後根據這些座標來填充它。

0

對於初學者來說......如果你改變了這一行:

for(k=1;k<=5;k++) 

對此:

for(k=1;k<=i;k++) 

(得到重複整數在號碼的開頭)

0
void display() 
{ 
    int i,k; 
    for(i=1;i<=5;i++) 
    { 
     for(k=1;k<=5;k++) 
     { 
      System.out.print(Math.max(i,k)); 
     } 
     System.out.println(); 
    } 
}  
1

修改你的內循環。該模式可以很容易地歸結爲if語句。如果您的k小於i,則應該打印出I而不是k。所以你在總循環會是這個樣子:

for(int i=1;i<=5;i++) 
{ 
    for(int k=1;k<=5;k++) 
    { 
     if(k<=i) System.out.print(i); 
     else System.out.print(k); 
    } 
    System.out.println(); 
} 

不要打印出像i+" ",除非你想每一個數字之間的空格。

此外,如果將其類型放入循環行內,則不需要在循環外聲明變量i和k。這將在循環時聲明它們,並在之後保持它們不變。雖然我猜如果你需要它們在被循環修改後堅持下去,那麼這是一個很好的方法。

相關問題