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

时间:2016-02-13 04:37:43

标签: java

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

但是当我使用System.out.println(abc.charAt(row))时;它会说它超出了bexception,因为它使用了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));
}
}

1 个答案:

答案 0 :(得分:3)

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

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

int index = abc.indexOf(row);

有关详细信息,请查看String#indexOf

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

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