You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Scala中用户输入字符与Char类型比较失败问题排查

问题原因&解决方案

嘿,我一眼就揪出你代码里的问题啦!

你用scala.io.StdIn.readLine()获取的用户输入是String类型——哪怕用户只敲了一个字符,它也是长度为1的字符串,但你用来做比较的'X'和'Y'是Char类型(单个字符)。Scala是强类型语言,不同类型的变量用==比较时,结果必然是false,这就是为啥你每次输入X/Y都会触发错误提示的核心原因!

给你两种简单的修复方案:

方案1:把输入转换成Char类型

先确保用户输入的是单个字符,再提取出对应的Char来比较(加个trim还能去掉用户不小心输入的空格):

var marker = 0
while (marker == 0) {
  val ans1 = scala.io.StdIn.readLine().trim
  println(ans1)
  // 先检查输入是否是单个有效字符
  if (ans1.length == 1) {
    val inputChar = ans1.charAt(0)
    if (inputChar == 'X') {
      marker = 1
    } else if (inputChar == 'Y') {
      marker = 2
    } else {
      println("Faulty input. Please retry: X or Y?")
    }
  } else {
    println("Faulty input. Please retry: X or Y?")
  }
}

方案2:直接用字符串做比较

既然输入本身就是String,那把比较的目标改成字符串"X"和"Y"就行,这是最简洁的修复方式:

var marker = 0
while (marker == 0) {
  val ans1 = scala.io.StdIn.readLine().trim
  println(ans1)
  if (ans1 == "X") {
    marker = 1
  } else if (ans1 == "Y") {
    marker = 2
  } else {
    println("Faulty input. Please retry: X or Y?")
  }
}

两种方案都能解决你的问题,方案2更省心,方案1则能更严格地限制用户只能输入单个字符,你可以按需选择~

内容的提问来源于stack exchange,提问作者Astudent

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 08:59:40