我想写一个代码来绘制左三角形。我添加了迄今为止我所做的伪代码:
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
我无法找到错误的地方。任何帮助都会得到满足。
答案 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。