سؤال

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?

هل كانت مفيدة؟

المحلول

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)

نصائح أخرى

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

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top