/ / Wystąpił błąd podczas próby skompilowania mojego kodu [duplikat] - java

Wystąpił błąd podczas próby skompilowania kodu [duplicate] - java

Próbowałem podzielić zdanie na dwa słowa, próbowałem logiki rozwiązania. Ale mój kod pokazuje błąd
Zobacz mój kod:

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();
}

}

}

Kiedy kompiluję powyższy kod, pokazuje mi błąd taki jak poniżej:

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

Nie mogłem znaleźć błędów. Czy możesz mi pomóc ...

Odpowiedzi:

1 dla odpowiedzi № 1

Twój problem jest tutaj:

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

Gdyby words ma tylko jeden element (tzn. nie ma „:” w ciągu, który próbujesz podzielić), words[1] rzuciłby ten wyjątek.

Powinieneś sobie z tym poradzić w ten sposób:

String[] words=lines.split(":",2);
if (words.length > 1)
map.put(words[0], words[1]);