我正在制作一个基本的 Tic Tac Toe 游戏,以字符串(即 a2)的形式接受玩家输入。第一个字符根据字母被转换为名为 row 的 int ,第二个字符也被转换为 col (对于数组 grid[row][col] )。我有一段代码,如果第一个字符不是 a、b 或 c,并且第二个字符不是 1、2 或 3,则会引发自定义异常:
if(input == null) {
throw new NullInputException();
}
else if(input.length() != 2) {
throw new InvalidInputException();
}
else if(!(input.substring(0,1).equalsIgnoreCase("a") &&
input.substring(0,1).equalsIgnoreCase("b") &&
input.substring(0,1).equalsIgnoreCase("c") ||
input.substring(1).equals("1") &&
input.substring(1).equals("2") &&
input.substring(1).equals("3"))) {
throw new InvalidInputException();
}
问题是,即使输入有效,这段代码也会抛出错误,我不知道为什么。我尝试过使用 .charAt() 而不是 .substring(),并且弄乱了我的条件语句。我的问题是:如何修复此问题以使其接受有效输入?
其他没有帮助的问题: fill two dimensional array with parts of a string ; fill a 2d array with chars of 2 string
最佳答案
有时最好编写一系列更简单的测试,这些测试更易于阅读和验证
row = input.substring(0,1).toUpperCase();
col = input.substring(1);
boolean validRow = (row.equals("A") ||
row.equals("B") ||
row.equals("C"));
boolean validCol =
(col.equals("1") ||
col.equals("2") ||
col.equals("3"));
if(!(validRow && validCol)) {
关于java - 使用字符串输入中的字符填充二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29148992/