java - 使用字符串输入中的字符填充二维数组

标签 java arrays

我正在制作一个基本的 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/

相关文章:

java - Android View 枚举

java - 如何在 Java 中启动 IBM MQ channel ?

java - 3路归并排序

php - 展平多维数组的函数无法按预期工作

javascript - 如果不为空,则将多个数组合并在一起

c - 有没有一种好方法可以从字符串中删除一个字符而不复制它后面的所有字符?

Java string.format() 只工作了一半

java - Lombok 如何将代码生成到现有类中?

java - 列出有重复项到无重复项

c++ - 是否可以创建结构的二维 vector ?