运行 尝试使用缓冲 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();
这将消耗新行,但仍可用于接受下一个输入
我是 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();
这将消耗新行,但仍可用于接受下一个输入