2014-12-22 5 views
1

Я попытался разбить предложение на два слова, я попробовал некоторую логику для решения. Но мой код показывает мне ошибку
Посмотреть это мой код:Ошибка при попытке скомпилировать мой код

import com.eg.*; 
import java.util.*; 
import java.io.*; 

public class DiskSpace { 


    public static void main(String[] args) { 
     try 
     { 
      HashMap map=new HashMap(); 
      Process p=Runtime.getRuntime().exec("cscript C:\\eGurkha\\lib\\vmgfiles\\win\\eg_diskspace.vbs"); 
      BufferedReader rd=new BufferedReader(new InputStreamReader(p.getInputStream())); 
      String lines=rd.readLine(); 

      while(lines!=null) 
      { 
       String[] words=lines.split(":",2); 
       map.put(words[0], words[1]); 
       lines=rd.readLine();     
      } 
      System.out.println(map.size()); 
      Iterator it=map.entrySet().iterator(); 
      while(it.hasNext()) 
      { 
       Map.Entry str=(Map.Entry)it.next(); 
       System.out.println(str.getKey()); 
       System.out.println(str.getValue()); 
      } 


     } 
     catch(IOException e) 
     { 
      e.printStackTrace(); 
     } 

    } 

} 

Когда я компилировать код выше это показывает мне ошибку, как показано ниже:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1 
    at com.kavi.tasks.DiskSpace.main(DiskSpace.java:20) 

Я не мог найти ошибки , могли бы вы мне помочь ...

+0

Какой из перечисленных выше линий строки 20? Не могли бы вы отметить его, пожалуйста? – glglgl

ответ

1

Ваша проблема здесь:

map.put(words[0], words[1]); 

Если words имеет только один элемент (т. в String, который вы пытаетесь разбить, нет «:», words[1] выбрасывает это исключение.

Вы должны обращаться так:

String[] words=lines.split(":",2); 
if (words.length > 1) 
    map.put(words[0], words[1]); 
Смежные вопросы