scala、java中 赋值语句y=(x = 100)的返回结果区别

该文章分析了在Scala中使用BufferedReader读取文件时出现死循环的原因,主要是由于赋值语句返回Unit导致的条件判断错误。解决方案是改变读取和判断的逻辑,确保在while循环中正确检查readLine的结果。修复后,代码能正常读取文件并避免无限循环。
摘要由CSDN通过智能技术生成

问题描述

提示:scala中读取文本文件的行时,导致死循环

object BugCode extends App {
  // 读取数据
  // 1. 创建File + FileReader + BufferedReader
  val inPath = "1.txt"
  private val bufferedReader = new BufferedReader(new FileReader(new File(inPath)))

  // 2. 读取数据
  private var str: String = ""
  while ((str = bufferedReader.readLine) != null) {
    println(str)
  }

  // 3. 关闭流
  bufferedReader.close
  println("读取完毕")
  
}

原因分析:

scala-赋值语句返回Unit:

var x: Int = 10
val y: Unit = (x = 100)

(str = bufferedReader.readLine) != null // Unit != null
java-赋值语句返回变量结果值
    int x = 10;
    int y = (x = 100);

解决方案:

  // 读取数据
  // 1. 创建File + FileReader + BufferedReader
  val inPath = "/usr/local/lib/mavne01/profu_12/prozi02/src/main/scala/com/maven/java/1.txt"
  private val bufferedReader = new BufferedReader(new FileReader(new File(inPath)))

  // 2. 读取数据
  private var str: String = bufferedReader.readLine
  while (str != null) {
    println(str)
    str = bufferedReader.readLine
  }

  // 3. 关闭流
  bufferedReader.close
  println("读取完毕")

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值