Scala之循环练习(scala打印九九乘法表)

本文通过具体的示例,展示了Scala语言在处理数学运算、条件表达式和循环控制等方面的应用。包括九九乘法表的生成,多班级学生成绩的统计与平均分计算,以及基于条件的数值操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

   之一
    package com.smalltiger.ConditionalExpression
    
    import scala.io.StdIn
    
    /**
      * Created by smalltiger on 2018/11/30.
      */
    object Demo03 {
      def main(args: Array[String]): Unit = {
        //scala九九乘法表
        for (i <- 1 to 9){
          for(j <- 1 to i){
            print(i+"x"+j+"="+i*j+"\t")
          }
          println()
        }

    //统计三个班的学生成绩,每个班有5名学生,求出各个班级的平均分和所有班级的平均分,学生成绩从键盘输入
    var sum = 0 //统计及格人数
    var sum1 = 0.0
    val number = 5

    println("请输入一班的学生成绩:")
    for (i <- 1 to number) {
      var a = StdIn.readDouble()
      println("一班" + i + "号学生成绩:" + a)
      sum1 = sum1 + a;
      if (a >= 60) {
        sum = sum + 1;
      }
    }
    println("一班学生平均成绩为:" + (sum1 / number))

    var sum2 = 0.0
    println("请输入二班的学生成绩:")
    for (i <- 1 to number) {
      var a = StdIn.readDouble()
      println("二班" + i + "号学生成绩:" + a)
      sum2 = sum2 + a;
      if (a >= 60) {
        sum = sum + 1;
      }
    }
    println("二班学生平均成绩为:" + (sum2 / number))

    var sum3 = 0.0
    println("请输入三班的学生成绩:")
    for (i <- 1 to number) {
      var a = StdIn.readDouble()
      println("三班" + i + "号学生成绩:" + a)
      sum3 = sum3 + a;
      if (a >= 60) {
        sum = sum + 1;
      }
    }
    println("三班学生平均成绩为:" + (sum3 / number))

    print("所有班级学生平均分: ")
    val avg = (sum1 + sum2 + sum3) / (3 * number)
    printf("avg=%.2f\n", avg)

    println("所有班级的及格人数为:" + sum)
  }
}

之二

package com.smalltiger.ConditionalExpression

import scala.io.StdIn

/**
  * Created by smalltiger on 2018/11/30.
  */
object Demo04 {
  def main(args: Array[String]): Unit = {
    //100以内数求和,并求出当和第一次大于10时i的值
    /* var sum = 0;
     var a:Boolean =true;
     for (i <- 1 to 100 if a==true){
       sum = sum + i
       if(sum > 10){
         println("i="+i)
         a=false;
       }
     }*/

    //登录判断的实现,总共有三次机会,当用户名为"smalltiger",密码为"888",提示登录成功
    /*    var a:Boolean =true;
        for(i <- 1 to 3 if a==true){
          println("请输入用户名:")
          var name = StdIn.readLine()
          println("请输入密码:")
          var password = StdIn.readLine()
          if(name=="smalltiger"&&password=="888"){
            println("smalltiger 欢迎来到我的世界!")
            a=false
          }else{
            println("登录失败,您还有"+(3-i)+"次重新登录的机会!")
          }
        }*/

    /*某人有100000元现金,每经过一次路口被打劫依次,打劫的规则如下:
    * 1.当现金>50000时,每次交5%
    * 2.当现金<=50000时,每次交1000
    * */
    var money = 100000.0;
    var sum = 0;
    var a:Boolean =true;

    while (a){
      if (money <= 100000&&money>50000) {
        money = 0.95 * money
        sum = sum + 1
      } else if (money <= 50000&&money>1000) {
        money = money - 1000
        sum = sum + 1
      } else if (money < 1000) {
        a = false
      }
    }


    println("此倒霉孩子被拦路打劫" + sum + "次!")
  }
}
<think>好的,用户想用Scala实现九九乘法表打印。首先,我需要回忆Scala循环结构,特别是for循环使用。根据之前的引用,Scala的for循环可以嵌套,并且支持倒序打印,比如使用`reverse`。此外,生成结果可以用`yield`收集,但这里直接打印可能更直接。 用户需要的是9x9的乘法表,所以需要两个嵌套的循环,外层控制行,内层控制列。需要注意的是,内层循环的范围应该是从1到当前行数,比如第3行只有3个式子。每一步打印一个乘法式,比如“1x1=1”,然后换行。 另外,引用中提到Scala没有break和continue,但这里不需要中断,所以不用担心。还要注意字符串插值的用法,比如s"${i}x${j}=${i*j}"来拼接字符串。最后,每行结束后需要换行,可以用println()。 现在需要把这些思路整理成代码。测试一下循环的范围是否正确,确保每一行输出的列数正确,并且对齐美观。可能需要调整打印的格式,比如使用制表符或者空格对齐。例如,打印时每个式子后面加一个制表符,行末换行。 再检查一下Scala的for循环语法,比如使用`1 to 9`生成1到9的范围,内层循环用`1 to i`,其中i是外层循环的变量。然后在内层循环结束后打印换行。 确定没有语法错误,比如箭头符号`<-`的正确使用,以及代码块的括号是否正确。同时,参考引用中的示例代码结构,确保正确性。比如,引用中的例子使用了`for (i <- 1 to 5 by 2)`,这里可以类似处理。 最终,写出一个嵌套的for循环结构,外层i从1到9,内层j从1到i,打印每个乘法式,并在内层循环结束后换行。这样就能正确输出九九乘法表了。</think>### Scala实现九九乘法表打印 以下是使用Scala的`for`循环嵌套实现九九乘法表的示例代码: ```scala object MultiplicationTable { def main(args: Array[String]): Unit = { for (i <- 1 to 9) { // 外层循环控制行数(1到9) for (j <- 1 to i) { // 内层循环控制当前行的列数(1到i) print(s"${j}x${i}=${i*j}\t") // 使用字符串插值和制表符对齐 } println() // 每行结束后换行 } } } ``` #### 代码解析 1. **外层循环**:`i`从1到9,表示乘法表的行数。 2. **内层循环**:`j`从1到当前行号`i`,确保每行输出`i`个乘法式。 3. **字符串插值**:`s"${j}x${i}=${i*j}"`将变量嵌入字符串,生成如`1x2=2`的格式。 4. **制表符`\t`**:保持每列对齐。 5. **换行控制**:内层循环结束后调用`println()`实现换行。 #### 输出示例 ``` 1x1=1 1x2=2 2x2=4 1x3=3 2x3=6 3x3=9 ...(以此类推到第9行) ``` #### 优化建议 - 若需倒序打印(从9到1),可修改为`for (i <- 9 to 1 by -1)`[^2]。 - 若需生成集合而非直接打印,可用`yield`收集结果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值