尝试使用缓冲读取器和字符获取输入时发生运行时错误



我是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.read()不区分回车符(回车键(和有效的输入。它不会将返回键识别为输入流的末尾,并将 Enter 视为第二个输入。要解决此问题,添加这样的br.readLine()

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

这将消耗新行,并且仍然可以接受下一个输入

与其读取两个字符并将它们转换为整数,不如使用 br.nextInt((。

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

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

这将消除"十个值"。

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

最新更新