运行 尝试使用缓冲 reader 和 char 获取输入时发生时间错误

Run time error occurred when trying to take input using buffered reader and char

我是 java 的新手,这是我的以下代码,用于从用户那里获取输入以添加两个数字。

package additio;

import java.io.*;
public class Additio
{
public static void main(String args[])throws Exception
{


BufferedReader br= new BufferedReader( new InputStreamReader(System.in));
System.out.println("Enter the two numbers to add:");
char d=(char) br.read();
char e=(char) br.read();
int a=Character.getNumericValue(d); 

int b=Character.getNumericValue(e); 
int c = a+b;
System.out.println("\nSum of two numbers:"+c);
}
}

现在,我的问题是:-

只取一个输入而不是写取两个输入的代码,为什么会出现这个运行时错误

以及为什么它只取单个值,它只取值 o 到 9,这意味着它只取 一个值,提供 十个值 它只给出 1,这是运行时错误。

不要读取两个字符并将它们转换为整数,而是使用 br.nextInt()。

这是因为您将输入放在单个字符中

char d=(char) br.read();

这消除了 "tens values"。

您可以将您的输入放在 String 中,也可以按照@rissandimo 的建议使用 br.nextInt()

如果您想知道为什么您的代码没有采用两个输入,那是因为 br.read()不区分回车return(enter key) 和一个有效的输入。它不会将 return 键识别为输入流的结尾,并将回车视为第二个输入。 要解决这个问题, 像这样添加一个 br.readLine() ,

char d=(char) br.read();
br.readLine();
char e=(char) br.read();

这将消耗新行,但仍可用于接受下一个输入