4

输入示例:

3

4

输出示例(假设空格 = 新行。)

QQQH
QQHH
QHHH

QQQQH
QQQHH
QQHHH
QHHHH

到目前为止,尝试打印的代码片段是(假设所有变量都是预定义的):

public int getSize()
{
    for (int i = size; i > 0; i--){
        for (int j = 1; j < size; j++){
            out.print("Q");
            out.print("H");
        }
        out.println("");
    }
    return 0;
}

它只是打印:(假设空格=新行。)

QHQHQHQHQH
QHQHQHQHQH
QHQHQHQHQH
QHQHQHQHQH
QHQHQHQHQH

对于 5 的输入。我不太确定如何让它只打印其各自整数值的次数。有人可以解释吗?

4

5 回答 5

2

您可以将内部循环中断两个,如下所示:

    for (int i = size; i > 0; i--) {
        for (int j = 0; j < i; j++) {
            out.print("Q");
        }
        for (int j = i; j < size + 1; j++) {
            out.print("H");
        }
        out.println();
    }

输出:

QQQH
QQHH
QHHH

QQQQH
QQQHH
QQHHH
QHHHH

或者如果你不想打破循环,你可以使用三元运算符:

for (int i = size; i > 0; i--) {
    for (int j = 0; j < size + 1; j++) {
        out.print(j < i ? 'Q' : 'H');
    }
    out.println();
}
于 2013-03-04T05:18:37.480 回答
1

试试这个代码块:

int j=0;
for (int i = size; i > 0; i--)
{
    j=0;
    while(j < i) 
    {
        out.print("Q");
        j++;    
    }
    j=i;
    while(j < size+ 1) 
    {
        out.print("H");
        j++;
    }
    out.println();
}
于 2013-03-04T05:22:05.047 回答
1

尝试这个

for (int i = 0; i < size; i++) {
 for (int j = 1; j <= size-i; j++) {
   System.out.print("Q");
 }
 for (int k = 0; k <= i; k++) { 
   System.out.print("H");
 }
 System.out.println("");
}
于 2013-03-04T05:24:00.313 回答
1

使用样本输入进行测试。工作正常

public int getSize() {
    for (int i = 1; i < size+1; i++) {
        for (int j = 0; j < size+1; j++) {
            int Qtimes = size-i;
            if(j <= Qtimes) {
                System.out.print("Q");
            } else{
                System.out.print("H");
            }
        }
        System.out.println("");
    }
    return 0;
}
于 2013-03-04T05:24:17.047 回答
0

如果输入为 4,则此方法有效 - 例如 - 将其更改为任何数字

public int getSize()
{
    int cnt = 0;
    int i,j,k = 0;

    for ( i = 4; i > 0; i--){

        for ( j = 0; j < i; j++){

        System.out.print("Q");

        }
        cnt ++;
        for( k = 0 ; k <cnt ; k++) {
            System.out.print("H");
        }

        System.out.println("");

    }


    return 0;
}

输出是

QQQQH
QQQHH
QQHHH
QHHHH
于 2013-03-04T05:20:01.277 回答