Groovy实现简单井字棋时switch语句无法修改二维数组元素问题
问题根因
你代码的核心问题是输入值的类型和switch的case值类型不匹配:
调用readLine()获取到的用户输入是字符串类型,而你switch里的case判断的是1~9的整数,Groovy不会默认做类型转换匹配,因此所有case分支都不会被触发,自然无法替换数组里的空格。
修复方法
任选下面一种即可:
- 方式1:把用户输入转为整数
修改获取输入的代码为:
def input = System.in.newReader().readLine() as Integer
建议额外加输入合法性校验,避免用户输入非数字内容报错。
- 方式2:把switch的case改为字符串匹配
把所有case后的数字改为带引号的字符串即可,例如:
switch(input){ case "1": gameBoard[0][0] = 'X' break case "2": gameBoard[0][2] = 'X' break // 其余case同理修改即可 }
修改后运行代码,输入对应数字即可正常替换X显示。
内容的提问来源于stack exchange,提问作者Kadie
相关产品推荐
相关产品推荐

