Java中的三角问题

时间:2017-02-13 19:25:33

标签: java

我想写一个代码来绘制左三角形。我添加了迄今为止我所做的伪代码:

 for(int i =1 ; i <= 10 ; i++ )  // main loop
{
   if(i<=5)
   {
       for(int h= 1 ; h <= 5 ; h++ )  //sub loop
           if(h<=i)      // my conditions in 1st case
               System.out.print(h);
   }
   else
        for(int h= 1 ; h <= 4 ; h++ ) // 2nd sub loop
            if(h<=i) // 2nd conditions and reason for error 
                System.out.print(h);

   System.out.println();

此代码给出了以下输出:

1
12
123
1234
12345
1234
1234
1234
1234

我的预期输出是:

1
12
123
1234
12345
1234
123
12
1

我无法找到错误的地方。任何帮助都会得到满足。

3 个答案:

答案 0 :(得分:0)

我认为你的意思是:

protocol OID: Hashable
{
  var sha: String { get }
}

extension OID { public var hashValue: Int { return sha.hashValue } }

protocol CommitType
{
  associatedtype ID: OID
}

class CommitEntry<C: CommitType>
{
  typealias ID = C.ID

  var lines1 = [ID: (a: UInt, b: UInt)]()    // No problem
  var lines2 = [C.ID: (a: UInt, b: UInt)]()  // Error: ambiguous
}

区别在于第二个循环的条件 - for (int i = 1; i <= 10; i++) { if (i <= 5) { for (int h = 1; h <= 5; h++) { if (h <= i) { System.out.print(h); } } } else { for (int h = 1; h <= 10 - i; h++) { if (h <= i) { System.out.print(h); } } } System.out.println(); } 而不是10 - i。另外,我建议你处理缩进,并在循环和h <= 4之后总是使用大括号。可读性很重要。

相同代码的稍微简单且更易读的版本将是:

if

在这里,我使用了两个循环而没有for (int i = 1; i < 6; i++) { for (int h = 1; h <= i; h++) { System.out.print(h); } System.out.println(); } for (int i = 6; i < 11; i++) { for (int h = 1; h <= 10 - i; h++) { System.out.print(h); } System.out.println(); } 语句,因此嵌套的次数较少。

答案 1 :(得分:0)

您需要将第二个内部for循环的条件更改为

for (int h = 1; h <= 10 - i; h++)

你最终的结果会是这样的:

    for(int i =1 ; i <= 10 ; i++ ){
        if(i<=5){
            for(int h= 1 ; h <= 5 ; h++ )  //sub loop
                if(h<=i)
                    System.out.print(h);
        }else{
            for(int h= 1 ; h <= 10 - i ; h++ ) // 2nd sub loop
                if(h<=i) // 2nd conditions and reason for error 
                    System.out.print(h);
        }
    System.out.println();
    }

答案 2 :(得分:0)

for(int i = 1; i <= 10; i++) //i <= 9 to remove 0
{
    if(i <= 5)
    {
        for(int h = 1; h <= i; h++)
        {
            System.out.print(h);
        }
    }
    else
    {
        for(int h = 1; h < (10-i); h++) //mirrors numbers around 5 (7-->3...)
        {
            System.out.print(h);
        }
    }
    System.out.println();
}

这使得大于5的数字减少了它们大于5的数量,即6是5 + 1因此产生4.或者换句话说,当它们大于5时,它们围绕5极点反映。

此外,当你的第一个for循环上升到10时,最后会有一个额外的0,只需让第一个for循环上升到9。