# 리뷰: 원의 넓이
#### CODE <a class='btn btn-default' href='/codes/22705'>Link</a>
```
public class CircleAreaCalculator {
public static void main(String[] args) {
/* 1. 입력값 받기 */
int r = Integer.parseInt(args[0]);
/* 2. 원의 넓이 계산 */
double S = Math.PI * r * r;
/* 3. 결과 출력 */
System.out.printf("반지름이 %d인 원의 넓이 => %.3f", r, S);
}
}
```
#### INPUT
```
```
#### OUPUT
```
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
at CircleAreaCalculator.main(CircleAreaCalculator.java:4)
```
오류의 원인이 무엇인지를 모르겠습니다.
nobinson20님의 답변
입력값에 숫자를 입력하지않으셨네요. 숫자 입력하시면 정상적으로 결과값이 나올 것입니다. 그러나, 에러 내용에 대해서 쪼끔 더 상세하게 설명드리겠습니다. 클라우드스터딩 사이트에서 제공하는 웹컴파일러는 대략 다음과 같이 컴파일하고 실행합니다. <br>
`javac CircleAreaCalculator.java` // javac라고하는 자바 컴파일러로 `CircleAreaCalculator.java`를 `CircleAreaCalculator`이라는 실행가능한 자바 프로그램을 만듭니다.<br>
`java CircleAreaCalculator @입력값(즉, args[0])` // java라는 명령어로 `CircleAreaCalculator`을 실행하는데, 그 전에 이 프로그램 이름 뒤 공백(여러칸이어도 됩니다) 다음에 오는 command line argument를 이 프로그램의 파라메터로 넣어줍니다.<br>
코드에서 `args`라고 하는 것은 `main`함수에서 `String args[]`로 정의되어있듯이 문자열을 가진 배열입니다. 무엇을 위한 배열이냐! 바로 위에서 `java CircleAreadCalculator` 다음에 오는 글자들, 즉 command line arguments를 전달받습니다. 작동 예시로는, foo라는 자바 프로그램에 여러 가지 command line arguments를 넣어서 실행했을때 그 값들을 출력만하고 싶다고 해봅시다. <br> ex) <br>
foo 나는 오늘도 배가 고프다 <br>
나는 -> `args[0]`, 오늘도 ->`args[1]`, 배가 -> `args[2]`, 고프다->`args[3]` <br>
이렇게 해서 args는 길이가 4인 배열이 될 것이고 그것들을 for 문을 통해서 출력만 하면 되겠죠. <br>
다시 돌아가서 에러 내용을 보면 `ArrayIndexOutOfBoundsException: 0` 라고 하고 있습니다. 다시 말해, `args[0]`에 값이 없는데 참조를 하고있다는 말이죠. 문제에서 테스트로 요구한 값을 넣어주시면 정답이라고 나올 것입니다.