在java中将字符串坐标转换为数组上的位置

在java中将字符串坐标转换为数组上的位置,java,Java,Hi希望在我正在构建的tic-tac-toe游戏中读取值背后的逻辑方面得到一些帮助。您只需在开始时设置一个默认值,如: int row = 0, column; 或者写另一个whileLoop来防止这种情况 除此之外,还有一种更简单的方法来分配行(在我的计算机上,当您将字符串与字符进行比较时要小心,因为它不起作用): 1.比较答案的第一个字母(或.equals(“a”)): 2.做一个切换案例,因为你总是比较相同的东西: switch(string.charAt(0)){ c

Hi希望在我正在构建的tic-tac-toe游戏中读取值背后的逻辑方面得到一些帮助。

您只需在开始时设置一个默认值,如:

int row = 0, column;
或者写另一个whileLoop来防止这种情况


除此之外,还有一种更简单的方法来分配
(在我的计算机上,当您将
字符串
字符
进行比较时要小心,因为它不起作用):

1.比较答案的第一个字母(或
.equals(“a”)
):

2.做一个切换案例,因为你总是比较相同的东西:

switch(string.charAt(0)){
        case 'a':
            row=0;
            break;
        case 'b':
            row=1;
            break;
        case 'c':
            row=2;
            break;
        }
3.使用其ASCII值:

row = string.charAt(0)-97;

因此:


而且要小心,因为如果
inBounds()
实现得很好:如果坐标正确,它将返回true,但是如果条件为true,while循环将继续,并且您需要它在坐标不正确时循环,因此您需要使用
!inBounds()

它告诉您,
可能未初始化,因为如果所有
如果
的计算结果为
false
将未初始化。如果您告诉用户在
a
c
之间插入一个字母,您将无法确保用户不会输入
d
。在这种情况下,
将保持未初始化状态。我明白了,有没有简单的方法解决这个问题?我是否应该在它们的警告错误字母中添加else语句?是的,您应该这样做,您可以使用while循环不断询问用户正确的输入
字符串。equals('a')
将永远不会为真,参数类型必须为字符串。重写所有这些条件:
string.equals(“a”)
非常感谢,是的,我还认为减ASCI值是最干净的方法。我有点困惑的是Charat(0)-程序如何知道0值是什么?Charat()方法将使用字符串作为数组,因此它有许多索引,给定索引处的每个元素都是一个字符。因此,“0”将是第一个索引->第一个字符您还有char[]tab=string.toCharArray(),这里是创建数组的方法,因此.charAt()是.toCharArray()的快捷方式,然后访问itI。我看到,代码不起作用,我认为没有存储值。我需要将它从字符串转换为int吗?在去掉97值之后否,因为当你在字符上使用数学函数时,它直接使用它的ascii值,所以它可以在一个int中写入System.out.println(“->”+row”;在while循环之后进行检查,问题到底出在哪里?
row=string.charAt(0)-97;
也可以重新写入
row=string.charAt(0)-“a”
为了清晰起见:)
row = string.charAt(0)-97;
public void askPlayer(char player) {
        Scanner instruction = new Scanner(System.in);
        int row, column;
        do {
            System.out.printf("Player %s please enter an instruction (a-c): ", player);
            String string = instruction.next();
            row = string.charAt(0)-97;
            System.out.printf("Player %s please enter a column (1-3): ", player);
            column = instruction.nextInt();
        } while (!inBounds(row, column));
         makeMove(player, row, column - 1);
    } // end of ask player method