通过接受字符串使用for循环打印模式

时间:2015-08-08 11:51:22

标签: java string

示例输入字符串:

  

BlueJ的

输出:

b***b
*l*l*
**u**
*e*e*
j***j

(其中' *'表示空格)

到目前为止,我做了这么多:

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*

4 个答案:

答案 0 :(得分:2)

第二次循环终止条件应为j<=n 如果条件应为(i == j || i == n - j)

在检查所涉及变量的值时,在调试器中测试代码可能会让您自己解决。

答案 1 :(得分:2)

只需将i == n-(j-1)替换为i == n - j,将第二个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();
}

答案 2 :(得分: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,则j = 4且j = 0
  • 的条件为真

答案 3 :(得分: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();
    }
}