Question

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?

Was it helpful?

Solution

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)

OTHER TIPS

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

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top