Pregunta

static void main(args){

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

    }

The source code..simple one I guess but dont know why it is printing till 48..here is the output if the argument supplied is 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

what could be the problem?

¿Fue útil?

Solución

Tartar is right, the solution is to change

def input = it.readLine()

To

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

Or (more Groovy)

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

(the reason it is using the ASCII value of 1 is that groovy will convert single char strings to their ASCII value if you try to coerce them into an int... It has been argued that this is confusing, and it may change in future versions of groovy, but for now it remains for backward compatibility reasons)

Otros consejos

ascii value for character 1 is 49. so convert input to integer maybe?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top