2014-11-03 7 views
0

나는 책에서 코드를 읽고 주어진 문자열에 유효한 숫자가 들어 있는지 확인하고, 그렇다면 이진 (내부) 형식으로 변환한다고합니다. 다음과 같이 코드를 작성해야합니다문자열이 유효한 숫자인지 확인 : ArrayIndexOutOfBoundsException

public class Exercise5 
{ 
    public static void main(String args[]) 
    { 
     String aNumber = args[0]; 
     double result; 
     try { 
      result = Double.parseDouble(aNumber); 
      System.out.println("Number is " + result); 
     } catch (NumberFormatException exc) { 
      System.out.println("Invalid number " + aNumber); 
      return; 
     } 
    } 
} 

을하지만 코드를 복사하고 컴파일로, 그것은 java.lang.ArrayIndexOutOfBoundsException을 가진이 발생할 것입니다. 문제가 무엇이라고 생각합니까?

+0

당신이 통과해야 인 aNumber를 사용하는 것입니다 후 수 여부를 확인하려면 실행할 때 –

+0

프로그램 인수를 제공하지 않으면 어디에서'args [0]'의 내용을 가져와야합니까? – Tom

답변

3

액세스하는 배열은 args뿐입니다. 비어 있지 않은지 확인하지 않고 해당 배열의 첫 번째 요소에 액세스하고 있습니다. 이 배열에는 Java 응용 프로그램에 전달 된 명령 줄 인수가 들어 있습니다.

String aNumber = null; 
    if (args.length > 0) 
     aNumber = args[0]; 

을 그리고 당신은 당신의 프로그램에 인수를 전달해야합니다

당신은 그것을 액세스하기 전에 배열을 확인해야합니다.

+1

감사합니다. 그렇다면 코드에 무엇을 추가해야합니까? – MarshallLee

1

잘 작동하는 것처럼 보입니다. 실행하고있는 동안 명령 줄 인수로 번호를 부여 했습니까? 그것은 당신이 명령 줄 인수 호출되는 프로그램을 실행하는 동안 줄 인수를 몰랐어요 경우

Number is 56.0 

를 얻을이

java Exercise5 56 

같은 터미널에서 잘

실행을 작동 , 예를 들어 말할 때면 java myprogname 5 6 7

메인에서

args[0]=5, 
args[1]=6 ... 
3

자바 파일을 실행할 때 원하는 숫자를 문자열로 전달해야합니다.

java Exercise5 123 
       ↑ 
       args[0] 

하지만 당신은 다음 args[0] doesn't exist 값을 전달하지 않고 실행하는 경우 때문에 인수 [] 배열 .IT의 empty array에는 요소가없는 당신이 errorjava.lang.ArrayOutOfBoundException

java Exercise5 
       ↑ 
       args[0] //Exception 

목표를 가지고 .so를 이 프로그램의 문자열이 숫자인지 검사합니다.

그래서 프로그램을 실행하면 String wh 무형 문화 유산 u는 당신이 GET 출력이 괜찮나이 프로그램을

java Exercise5 5 

출력 >>Number is 5.0

java Exercise5 a 

출력 >>Invalid number a

관련 문제