【问题标题】:Swift 4 need help to make triangle using (*)Swift 4 需要帮助来使用 (*) 制作三角形
【发布时间】:2018-05-26 12:38:53
【问题描述】:

swift4 使用 stars(*) 和 它需要看一棵松树,我尝试使用下面的代码,但它没有按预期工作。 它需要看起来像等边三角形。

var empty = "";
for loop1 in 1...5
{
    empty = "";
    for loop2 in 1...loop1
    {
        empty = empty + "*";
    }
print (empty);
}

Now, Expected

【问题讨论】:

  • 请添加您遇到的错误
  • 用你想要的确切输出和你得到的输出更新你的问题。
  • 只需让您的文本居中对齐并在星星之间添加一个空格

标签: swift for-loop


【解决方案1】:

不是完全等边的,但尽可能接近字符图形。主要的事情是,您需要在每行上使用奇数个星号才能居中工作,并且您需要计算偏移量。

(而且,即便如此,您也需要以等宽字体输出以使其看起来正确。)

编辑:为了可读性进行了一些清理(并结合了第一条评论的更改)。

let treeHeight = 5
let treeWidth = treeHeight * 2 - 1

for lineNumber in 1...treeHeight {

    // How many asterisks to print
    let stars = 2 * lineNumber - 1
    var line = ""

    // Half the non-star space
    let spaces = (treeWidth - stars) / 2
    if spaces > 0 {
        line = String(repeating: " ", count: spaces)
    }

    line += String(repeating: "*", count: stars)
    print (line)
}

【讨论】:

    【解决方案2】:

    例如:

          *
         ***
        *****
       *******
      *********
    

    代码:

    
    let numberOfRows = 5
    
    for i in 0..<numberOfRows 
    {
        var printst = ""
    
        for a in 0..<(numberOfRows + 1) 
        {
            let x = numberOfRows - i
    
            if (a > x) {
                printst = printst + "*"
            } else {
                printst = printst + " "
            }
        }
        
        for _ in 0..<(i+1) 
        {
            printst = printst + "*"
        }
        
        print(printst)
    }
    
    

    【讨论】:

      【解决方案3】:

      您可以使用此代码打印星形三角形

      for i in 1...5{
          for _ in 1...i{
              print("*",terminator:"")
          }
          print(" ")
      }
      

      【讨论】:

      • 错了。这不会绘制 OP 所期望的三角形。结果不一样。
      猜你喜欢
      • 2021-05-29
      • 2019-11-18
      • 1970-01-01
      • 1970-01-01
      • 2020-06-10
      • 2020-04-16
      • 2015-08-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多