为什么在使用read()
方法而不是readLine()
BufferedReader
将字符解析为整数时会出现异常。我尝试使用以下代码:
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
int a= Integer.parseInt(br.read());
错误是:无法将int转换为字符串..非常奇怪的错误
答案 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值,你就不需要做任何事情。