gpt4 book ai didi

java - 如何读取用户输入的字符?

转载 作者:行者123 更新时间:2023-12-01 16:55:27 26 4
gpt4 key购买 nike

当我输入字符时,输出显示为错误输入。我不明白出了什么问题。编译器中给出的输入是大写字母 E 或 D,但当它符合 switch case 时,将运行默认情况。

public static void main(String[] args) throws IOException {
//Scanner
//Scanner s = new Scanner(System.in);
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int q = Integer.parseInt(br.readLine());
char c;
int i=0, j=0;
int id=0, jd=0;
int arr[][] = new int[q][q];
int temp[][] = new int[q][q];
for(int ip=0; ip<q; ip++)
{
c = (char)br.read();
switch(c)
{
case 'E':
for(int al=i; al<i+1; al++)
{
for(int al2=j; al2<j++; al2++)
{
arr[i][j] = Integer.parseInt(br.readLine());
}
}

}
i++;
j++;
break;

case 'D':
System.out.println(arr[id][jd]);
id++;
jd++;
break;
default:
System.out.println("wrong input");
}
}

最佳答案

tldr: Use c = br.readLine().charAt(0) instead of c = (char)br.read() in your for loop to read char.

<小时/>

如果您尝试使用 q = 1 运行它,然后使用 char c = 'E' 作为输入,它会按预期工作。

但与 q = 2 相同,对于 q 的其他值执行默认情况,依此类推。

因为当您输入 ED 并按 enter 时,程序会读取 \r\n,所以 \r 用于第二次迭代,然后 \n 用于第三次迭代。

因此,建议使用br.readLine().charAt(0),以便您可以逐行读取char

完整代码如下:

public static void main(String[] args) throws IOException {
//Scanner
//Scanner s = new Scanner(System.in);
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int q = Integer.parseInt(br.readLine());
char c;
int i=0, j=0;
int id=0, jd=0;
int arr[][] = new int[q][q];
int temp[][] = new int[q][q];
for(int ip=0; ip<q; ip++)
{
c = br.readLine().charAt(0);
switch(c)
{
case 'E':
for(int al=i; al<i+1; al++)
{
for(int al2=j; al2<j++; al2++)
{
arr[i][j] = Integer.parseInt(br.readLine());
}
}
//an extra closing bracket was put here by OP at first
i++;
j++;
break;

case 'D':
System.out.println(arr[id][jd]);
id++;
jd++;
break;
default:
System.out.println(c);
System.out.println("wrong input");
}
} // one } was missing here too.
}

关于java - 如何读取用户输入的字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61599217/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com