如何在 java 中的 int 输入之前获取 char 输入?
how to take char input before int input in java?
public class Pack1 {
public static void main(String ar[]) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.println("enter the character");
char c=(char)br.read();
System.out.println(c);
System.out.println("enter the integer");
long l=Integer.parseInt(br.readLine());
System.out.println("long l="+l);
System.out.println(c);
}
}
改变这个:
long l=Integer.parseInt(br.readLine());
至:
long l=Long.parseLong(br.readLine(), 10);
这是因为您正在尝试将 String 转换为 Long 而不是 Integer 类型。
假设用户在第一个问题上键入 X
并按回车键,然后在第二个问题上键入 123
并按回车键,这意味着输入流包含以下字符:
X <CR> 1 2 3 <CR>
当你调用read()
时,你只读到了X
。当您随后调用 readLine()
时,您会读取 <CR>
并返回一个空白字符串。
1 2 3 <CR>
在输入流中仍处于未读状态。
解决方法:阅读X
后调用readLine()
跳过该行的其余部分,或使用readLine()
阅读X
作为 String
,而不是 char
。
仅供参考:这与人们在使用 Scanner
并将对 nextLine()
的调用与对其他 nextXxx()
方法(如 nextInt()
)的调用混合时遇到的问题完全相同。
public class Pack1 {
public static void main(String ar[]) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.println("enter the character");
char c=(char)br.read();
System.out.println(c);
System.out.println("enter the integer");
long l=Integer.parseInt(br.readLine());
System.out.println("long l="+l);
System.out.println(c);
}
}
改变这个:
long l=Integer.parseInt(br.readLine());
至:
long l=Long.parseLong(br.readLine(), 10);
这是因为您正在尝试将 String 转换为 Long 而不是 Integer 类型。
假设用户在第一个问题上键入 X
并按回车键,然后在第二个问题上键入 123
并按回车键,这意味着输入流包含以下字符:
X <CR> 1 2 3 <CR>
当你调用read()
时,你只读到了X
。当您随后调用 readLine()
时,您会读取 <CR>
并返回一个空白字符串。
1 2 3 <CR>
在输入流中仍处于未读状态。
解决方法:阅读X
后调用readLine()
跳过该行的其余部分,或使用readLine()
阅读X
作为 String
,而不是 char
。
仅供参考:这与人们在使用 Scanner
并将对 nextLine()
的调用与对其他 nextXxx()
方法(如 nextInt()
)的调用混合时遇到的问题完全相同。