【问题标题】:Having Trouble using For Loops to make two triangles of different characters fit into a rectangle?使用 For 循环使两个不同字符的三角形适合矩形时遇到麻烦?
【发布时间】:2013-02-18 03:30:55
【问题描述】:

输入示例:

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 的输入。我不太确定如何让它只打印其各自整数值的次数。谁能解释一下?

【问题讨论】:

    标签: java loops printing for-loop nested


    【解决方案1】:

    您可以像这样将内部循环中断两个:

        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();
    }
    

    【讨论】:

      【解决方案2】:

      试试这个

      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("");
      }
      

      【讨论】:

        【解决方案3】:

        试试这个代码块:

        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();
        }
        

        【讨论】:

        • 为什么投反对票??请让我知道原因,也许我可以改进我的答案
        • 你有一个无限循环,修复它之后,你的代码仍然没有输出想要的结果。
        【解决方案4】:

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

        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;
        }
        

        【讨论】:

        • 我稍微修正了代码格式。如果您不喜欢,请随意回滚。
        【解决方案5】:

        如果输入为 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
        

        【讨论】:

          猜你喜欢
          • 2011-05-06
          • 1970-01-01
          • 2012-07-09
          • 1970-01-01
          • 1970-01-01
          • 2014-05-29
          • 2016-01-31
          • 1970-01-01
          • 2015-08-17
          相关资源
          最近更新 更多