2015-08-08 105 views
0

樣品輸入字符串印刷是使用for循環的圖案空白處)通過接受字符串

多少到目前爲止,我已經做到了這一點:

int n = s.length() - 1; 
int i, j; 
for (i = 0; i <= n; i++) { 
    for (j = 0; j <= (n + 1); j++) { 
     if (i == j || i == n - (j - 1)) 
      System.out.print(s.charAt(i)); 
     else { 
      System.out.print("*"); 
     } 
    } 
    System.out.println(); 
} 

但輸出是:

b****b 
*l**l* 
**uu** 
**ee** 
*j**j* 

回答

2

只是i == n - j和第二取代i == n-(j-1) for循環for (j = 0; j <= n+1; j++)for (j = 0; j <= n; j++)

int n = s.length() - 1; 
int i, j; 
for (i = 0; i <= n; i++) { 
    for (j = 0; j <= n; j++) { 
     if (i == j || i == n - j) 
      System.out.print(s.charAt(i)); 
     else { 
      System.out.print("*"); 
     } 
    } 
    System.out.println(); 
} 
+0

哪一個請提及? –

+0

是的,這是必需的,請運行此代碼。它的工作完美根據您的需要。 :) –

+1

感謝提及,編輯! –

2

第二循環的終止條件應該是j<=n
如果條件應該是(i == j || i == n - j)

在調試器中測試代碼的同時檢查涉及的變量的值可能會讓您自己解決它。

1

使用:

String s = "bluej"; 
    int n = s.length() - 1; 
    int i, j; 
    for (i = 0; i <= n; i++) { 
     for (j = 0; j <= (n); j++) { 
      if (i == j || i == n - (j)) 
       System.out.print(s.charAt(i)); 
      else { 
       System.out.print("*"); 
      } 
     } 
     System.out.println(); 
    } 
} 
2

第1步:看的字符數。您正在顯示6個字符,而預期的輸出顯示5個字符。您需要更改內部的結束,就像這樣:

for(j=0;j<=(n);j++) 

第2步:你期待有n+1作爲最後一個指標j,但它改爲n。需要應用它:

if(i== j || i == n-(j)) 

實例:

  • I = 0,則該條件是對於j = 0和j = 4
  • 真I = 1,則該條件爲真對於j = 1和j = 3
  • 設爲i = 2,則條件是對於j真= 2
  • I = 3,則條件是對於j真= 3且j = 1
  • i = 4的,然後是條件n對於j = 4和j = 0是正確的