2017-12-11 11 views
-4

whileループに内部= 1がある理由がわからないので、このコードをステップごとに説明してください。私が現在Scalaでループを学習しているので、このプログラムの一般的な概要とその動作を深く理解できます!whileループはどのようにScalaで動作しますか?

import scala.io.StdIn._ 

object loops4 { 
    def main(args: Array[String]): Unit = { 
     var outer = 1; 
     var inner = 1; 
     print("How many units for the base of the triangle? "); 
     var base: Int = readInt(); 
     while (outer <= base) { 
      inner = 1 
      while (inner <= outer) { 
       print ('*'); 
       inner += 1; 
      } 
      println("\n"); 
      outer += 1; 
     } 
    } 
} 
+1

人にいくつかのコードの全体を説明するように指示するのはあまりにも広すぎます。これを絞り込む必要があります。具体的には、あなたは理解を助ける必要がありますか?プログラムをデバッガで実行しているのを見たことがありますか?ここで一般的なアルゴリズムを理解していますか? – Carcigenicate

+0

* "whileループにinner = 1がある理由" * - その文を削除してコードをデバッグするとどうなりますか?それは異なった振る舞いをしていますか?その行為の違いは、そのコード行が存在する理由です。 – David

答えて

2

"Scalaでループを学ぶ" はいけない、それは時間の無駄です。スカラーを学ぶ。 これは除いて、スニペットとして(星間の冗長空行を除いて)同じことを行い、私はそれがどのように動作するか:)

(1 to base).foreach { n => println("*" * n) } 
+0

学習ループは私のコースの一部であり、私もそれについてテストされます。 – Billal

0

それが役立つかもしれないが、あなたがインターネット上で人を依頼する必要はありません賭けますCarcigenicateが示唆したようにコードをデバッグしてください。内側ループは外側ループの以前の反復で外側ループと一致するように変更されているため、外側ループの1に設定されます。デバッグし、外側のループの終わりで内側を観察します。このコードが行っている限りでは、標準出力に三角形を構築しています。外側のループは数えていて、内側のループは '*'の記号で行を構成しています。 Dimaが言っているように、Scalaでこれを行うためのより慣用的な方法があります。

関連する問題