繁体   English   中英

在我的例子中如何在 char 中输入 2 位数字

[英]how to input 2 digits in a char in my case

我有这个基于座位的代码,但行数超过 10+。 当我输入 1A 时,它会将座位排 1 列 a 从“*”更改为“x”。 现在我的问题是,当涉及到 2 位数字(例如 12B)时,它会给我错误,因为它只在检测行的字符中取“1”而不是整个“12”以将其更改为“x”。

我对我的问题有点想法,这是因为它是字符并且遵循 ASCII 但似乎无法找到解决我的问题的方法。 我知道这是一项作业,也从该站点获得了一些代码参考,但我在获取一些参考时研究了它们,而不仅仅是复制和粘贴。

这就是我卡住的地方

if (choice == 'c') {
            input.nextLine();
            String seatchoice = input.nextLine();
            char[][] seats = new char [13][6]; 
            for(i = 0; i < 13; i++) {
                seats[i][0] = '*';
                seats[i][1] = '*';
                seats[i][2] = '*';
                seats[i][3] = '*';
                seats[i][4] = '*';
                seats[i][5] = '*'; 
            }
            while (seatchoice.length() > 0 ) {
                int row = seatchoice.charAt(0) - '1';
                int col = seatchoice.charAt(1) - 'A';
                if (seats[row][col] != 'x') {
                    seats[row][col] = 'x';
                    System.out.println(" ");
                    printSeats(seats);
                }
        }
       }

方法 printSeats

private static void printSeats(char[][] seats) {
         System.out.println("\t A B C D E F");
         for (int i = 0; i < seats.length; i++) {
             System.out.println("Row " + (1 + i) + "\t " + seats[i][0] + " " + seats[i][1] + " " + seats[i][2] + " " 
         + seats[i][3] + " " + seats[i][4] + " " + seats[i][5]);
         }
          
     }

现在,当我尝试输入“10A”时,它会给出长度为 6 的索引 -17 超出范围。我希望它将第 10 行第 A 列更改为 x AB C DEF 第 8 行 * * * * * *第 9 行 * * * * * * 第 10 行 x * * * * * 第 11 行 * * * * * * 第 12 行 * * * * * * 第 13 行 * * * * * *

先感谢您。 请以任何方式纠正我,或者如果有什么我应该学习的。 我愿意接受任何批评。

由于这封信总是在最后一个索引中,您可以这样做

int row = Integer.parseInt(seatchoice.substring(0, seatchoice.length() - 1)) - 1;
int col = seatchoice.charAt(seatchoice.length() - 1) - 'A';

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM