2015-08-08 115 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是正确的