BufferedReader和InputStreamReader的read()方法

时间:2015-08-05 06:07:22

标签: java

为什么在使用read()方法而不是readLine() BufferedReader将字符解析为整数时会出现异常。我尝试使用以下代码:

BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
int a= Integer.parseInt(br.read());
  

错误是:无法将int转换为字符串..非常奇怪的错误

4 个答案:

答案 0 :(得分:1)

您需要在Integer.parseInt("need a String")中解析int

但是你在这里提供br.read()int返回BufferedReader br=new BufferedReader(new InputStreamReader(System.in)); int a= br.read();

您可以使用

5

编辑:

是的,当您输入br.read()时,53读取为int,因为' 5'的unicode值是53岁。

所以你想要处理int a=Integer.parseInt(br.readLine());。你可以尝试>> require './classfile' => true >> A => A

答案 1 :(得分:1)

Reader.read()只返回一个字符 - 但是int,这样您就可以判断是否已达到数据的末尾。

现在没有任何Integer.parseInt(int)方法,这就是调用失败的原因 - 甚至没有Integer.parseInt(char)。您可以转换为char,然后拨打Character.getNumericValue(char) ...或者您可以使用:

int digit = br.read() - '0';

...然后检查digit是否在0-9范围内。

或者你可以从你读过的单个字符创建一个字符串并调用Integer.parseInt,但这看起来有点过分......

答案 2 :(得分:0)

使用 int a= Integer.parseInt(br.readLine()); 功能。在这种情况下,值将被读取为字符串。

read()

parseInt()方法将字符作为整数返回。int a= Integer.parseInt(br.read())需要一个字符串,但是您给出一个整数。所以这里代码$(document).ready(function() { $("input[type='radio']").change(function() { if ($(this).siblings("span").html() == "Yes") { $("select").val("with price"); } else { $("select").val("no price"); } }); });尝试将int转换为int。因此错误。

答案 3 :(得分:0)

Reader及其子类包含int read()方法,该方法将单个字符读为int

它返回int而不是char的原因是因为它必须能够在到达流末尾时返回-1(以及char的65536个字符提供)。

如果您想阅读单个字符,您可以检查该值是否为-1,然后将其强制转换为char。如果你想将角色视为一个int值,你就不需要做任何事情。