2014-09-09 3 views
-2

호스트 이름을 전달하여 호스트 주소를 가져 오려고합니다. 하지만 내 코드를 실행하는 동안 예외가 발생합니다."main"스레드의 예외 java.lang.ArrayIndexOutOfBoundsException : 0

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0 
    at socketprogram_client.SocketProgram_Client.main(SocketProgram_Client.java:16) 
Java Result: 1 

아무도 왜이 오류가 발생하는지 알려주실 수 있습니까? 당신은 args 그래서 args[0]에 인수를 전달되지 않을 수 있습니다

package socketprogram_client; 

import java.io.*; 
import java.net.*; 

public class SocketProgram_Client 
{ 
    public static void main (String args[]) throws IOException 
    { 
     String host_name = args[0]; 

     try 
     { 
      InetAddress my_ipaddr = InetAddress.getByName(host_name); 
      System.out.println("Resolved to IP address: " + my_ipaddr.getHostAddress()); 
     } 
     catch (UnknownHostException e) 
     { 
      System.out.println("Could not find IP address for: " + host_name); 
     } 
    } 
} 
+1

원본의 코드 서식이 확실하지 않았습니다. 서식을 추가 할 때 행 번호가 변경되고 16 행에서 예외가 더 이상 16 행과 일치하지 않을 가능성이 있습니다. –

+0

args가 전달되는지 확인하십시오. Do a System.out.println (args.length) – markbernard

+1

또는 프로그램 디버깅 방법을 익히십시오. – Tdorno

답변

-1

것은이 널 (null) 일 수 있습니다

여기 내 코드입니다.

package socketprogram_client; 

import java.io.*; 
import java.net.*; 

public class SocketProgram_Client 
{ 
    public static void main (String args[]) throws IOException 
    { 
     if(args.length == 0){ 
      System.out.println("You didn't say a host name"); 
      System.exit(1); 
     } 

     String host_name = args[0]; 

     try 
     { 
      InetAddress my_ipaddr = InetAddress.getByName(host_name); 
      System.out.println("Resolved to IP address: " + my_ipaddr.getHostAddress()); 
     } 
     catch (UnknownHostException e) 
     { 
      System.out.println("Could not find IP address for: " + host_name); 
     } 
    } 
} 
+0

와우, 나는 그걸 완전히 간과했다 –

2

아무런 전달 인자가없는 것 같습니다. 당신은 몇 가지 검사를 수행해야합니다 프로그램을 실행할 때

public static void main (String args[]) throws IOException 
{ 
    if(args == null || args.length == 0){ 
     System.out.println("You didn't pass in any arguments!"); 
    } 
    else{ 
     //rest of code 
    } 
} 

, 명령 줄에서 인수가 있어야합니다

java SocketProgram_Client the_argument 

the_argument은 (args[0])에 전달하는 인수입니다.

+0

'args'가 null일까요? – Betlista

+0

@ 베틀 리스터 잘 잡으세요! 'args'는'null '이 될 수 없다는 것을 완전히 잊었습니다. 비어 있기 전에 null을 확인하는 습관의 힘. –

+0

@Betlista Updated –

관련 문제