문제

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