2015-03-31 31 views
0

打印填充的矩形,填充爲 //字符inChar的指定行數和行數, //由字符edgeChar構成的邊框包圍。如何在Scala中打印填充矩形?

我很困惑,所以我明白我想做多個循環。 我到目前爲止是一個嵌套循環,其中外循環是列數,內循環是行數。 我很困惑如何打印特定數量的破折號和+ s 以及我的循環內容。 如何以及哪裏的寬度和高度來發揮作用

for (k=1; k <= columns; columns >= k++) { 
    for (i = 1; i <= rows >= i++) { 
    println(edgeChar) 
    //println(+-) 
    } 

    for (i = 1; i <= rows; i++){ 
    for (j) 
     println(edgeChar) 
    } 
    for (j = 1; j <= columns; j++){ 
     println(inChar) 
    } 
    for (k, k<=columns+2;k++){ 
     println(edgeChar) 

回答

4

這是Scala中,你可能要映射與列表,而不是循環播放。這裏有一個工作示例(粘貼在斯卡拉REPL):

val ec="@" 
val cc="X" 
val cols=8 
val rows=5 

((ec*(cols+2)) +: Range(0,rows).map(_ => ec+cc*cols+ec) :+ (ec*(cols+2))).mkString("\n") 

這導致:

res22: String = 
@@@@@@@@@@ 
@[email protected] 
@[email protected] 
@[email protected] 
@[email protected] 
@[email protected] 
@@@@@@@@@@ 
+1

FYI'範圍(0,N)'也可以寫成'(0到N)' – 2015-03-31 20:59:14

+1

答案中代碼的主要獎勵點也是精確的盒形。那是班。 – 2015-03-31 21:56:46

+0

ScalaWag的加分!我現在可以快樂地死去了:-) 另外,使用更短的代碼片段製作這樣的矩形是一個有趣的挑戰(http://www.mbarsinai.com/blog/2015/04/01/print-a-filled-rectangle -in-階/) – 2015-04-01 10:18:18