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
相关产品推荐
相关产品推荐

