2014-01-05 2 views
0

Я только начал изучать отличный. Я уверен, выполнение программы ниже: -Странный выход в 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

Что вы пытаетесь сделать здесь? Вывести значение символа прочитанного? – unekwu

+0

Да, я хочу напечатать целочисленное значение. –

+0

br.read() возвращает целое число ascii считываемого символа. Вы должны использовать readline вместо http://docs.oracle.com/javase/7/docs/api/java/io/BufferedReader.html#read() – unekwu

ответ

2

Вы просто читаете первый символ пара как значение int ascii.

Попробуйте прочитать полную строку с последующим превращением его в междунар:

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 
      } 
     } 
    } 
} 
Смежные вопросы