2012-03-28 2 views
0
static void main(args){ 

     System.in.withReader { 
      def input = it.readLine() 
      for(def i = 0; i < input; i++){ 
       println i 
      } 
     } 

    } 

Источника code..simple один я думаю, но не знаю, почему он печатает до 48..here это выход, если аргумент поставляемого 1.итератора печать до 48, когда аргумент поставляемого 1

0 
1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
11 
12 
13 
14 
15 
16 
17 
18 
19 
20 
21 
22 
23 
24 
25 
26 
27 
28 
29 
30 
31 
32 
33 
34 
35 
36 
37 
38 
39 
40 
41 
42 
43 
44 
45 
46 
47 
48 

В чем проблема?

ответ

4

Тартар является правильным, решение изменить

def input = it.readLine() 

Для

def input = Integer.parseInt(it.readLine()) 

Или (более Groovy)

def input = it.readLine().toInteger() 

(Причина, по которой используется значение ASCII из 1 заключается в том, что groovy преобразует одиночные строки символов в их значение ASCII, если вы попытаетесь принудить их к int ... Было спорить d, что это сбивает с толку, и это может измениться в будущих версиях groovy, но на данный момент оно остается для соображений обратной совместимости)

3

Значение ascii для символа 1 равно 49. так что преобразовать ввод в целое возможно?

 Смежные вопросы

  • Нет связанных вопросов^_^