java - 如何使用 charAt 查找字符串中字符的位置

标签 java

所以我不想使用 ascii 表来做到这一点。我想让用户输入一个字母数字(例如 A3),然后获取字母表(A)并在字符串 ABC 中找到它,这样它就会给我一个 1-9 之间的数字,而不是 ascii 值。这将使我以后更容易放入二维数组。

但是当我使用 System.out.println(abc.charAt(row)); 时它会说它超出范围,因为它使用 ascii 值。我怎样才能让它不发生

        public static void main(String[]args){
        Scanner k = new Scanner(System.in);
        String abc = "ABCDEFGHIJ";
        String ab = "abcdefghij";
        abc.equals(ab);
        System.out.println("Please enter the attack location:");

            while (!k.hasNext("[A-J a-j]+[0-9]")) {
                System.out.println("Wrong");
                k.next();
            }

            String location = k.next();
            char row = location.charAt(0);
            int num = (int) location.charAt(1);
            System.out.println(abc.charAt(row));
}
}

最佳答案

请记住,A 的 ascii 字符从 65 开始,因此如果用户输入 A3,那么您实际上使用的是 abc.charAt(65) ,这显然不是你想要的。

相反,您需要找到该字符在数组中的索引...

int index = abc.indexOf(row);

看看String#indexOf了解更多详情

您可能还想使用 Character.toUpperCase 将用户输入的 char 转换为大写,这样可以更轻松地搜索您的String

ps- 类似 row - 65 (或 row - 'A' 如果很难记住的话)也会给你相同的结果;)

关于java - 如何使用 charAt 查找字符串中字符的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35376135/

相关文章:

java - Spring Cloud Streams 将数据条件转发到 Kafka 主题

java - 如何收集DoubleStream到List

Java JNA 读取进程内存 Linux

java - ZipEntry 的默认大小是多少

Java Web应用程序安全理念

java - java.util.concurrent.CompletableFuture 中的异常传播

java - Java RMI 中的代码库到底有什么意义?

java - 为什么 java String.split() 留下空字符串?

java - 构建一个 jar 以包含未获得执行权限的 shell 脚本文件

java - printf 为 "Cannot resolve symbol error"