Pergunta

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?

Foi útil?

Solução

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)

Outras dicas

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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top