我刚开始学习groovy。我正在执行以下程序: -
class hello {
static void main(def args)
{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in))
print "Input:"
int userInput = br.read()
println userInput
for(int i=1;i<10;i++)
{
int res = userInput + i
println "$res"
}
}
}
当我输入任何值时,它会给出userInput
的奇怪值。我尝试清除项目并重新执行它。然后我发现它正在取第一个数字并打印ASCII value
。为什么会这样?我需要进行类型转换吗?
我甚至试过br.read().toInteger()
但是没有用。
答案 0 :(得分:2)
你只是将蒸汽的第一个字符读取为int ascii值。
尝试阅读整行然后将其转换为int:
int userInput = Integer.parseInt( br.readLine() )
更惯用的是,你的类成为(假设Java 6):
class Hello {
static main( args ) {
System.console().with { c ->
int userInput = Integer.parseInt( c.readLine( 'Input : ' ) )
println userInput
(1..9).each {
println userInput + it
}
}
}
}