常规中的奇怪输出

时间:2014-01-05 09:45:47

标签: eclipse groovy

我刚开始学习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()但是没有用。

1 个答案:

答案 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
            }
        }
    }
}