尝试使用缓冲读取器和char进行输入时发生运行时错误

时间:2018-04-08 05:05:34

标签: java char user-input bufferedreader

我是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是运行时错误。

3 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

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

这消除了"数值"。

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

答案 2 :(得分:0)

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

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

这将消耗新行并仍可用于下一个输入