2016-04-18 14 views
-2

Wenn ich den Code ausführen es gibt einen Fehlernach einem Wort suchen in einer Textdatei in Java blau j

java.lang.ArrayIndexOutOfBoundsException: 0 
    at SearchFile.main(SearchFile.java:28) 

MyNote.txt wird die Textdatei in D-Verzeichnis von meinem Computer gespeichert. wobei "ad" das Wort in dieser Textdatei ist.

import java.io.*; 

public class SearchFile { 

public static void main(String args[]) { 

args[0] = "ad"; 

if (args.length > 0) { 
String searchword = args[0]; 

try { 

int LineCount = 0; 
String line = ""; 

BufferedReader bReader = new BufferedReader(new FileReader("D:/MyNote.txt")); 

while ((line = bReader.readLine()) != null) { 
LineCount++; 

int posFound = line.indexOf(searchword); 
if (posFound > - 1) { 
System.out.println("Search word found at position " + posFound + " on line " + LineCount); 
} 
} 
bReader.close(); 
} 
catch (IOException e) { 
System.out.println("Error: " + e.toString()); 
} 
} 
else { 
System.out.println("Please provide a word to search the file for."); 
} 
} 
} 

Ich weiß nicht, was der Fehler ist oder was ich falsch gemacht habe. ich bin neu dazu eigentlich bitte hilfe !! DANKE

+0

Sie ordnen args [0] einen Wert zu, ohne zu prüfen, ob es überhaupt einen solchen Index gibt. Mit anderen Worten, wenn der Hauptmethode keine Argumente zugewiesen wurden, löst args [0] eine 'ArrayIndexOutOfBoundsException' aus, da es keinen solchen Array-Index gibt. –

+0

ich sehe ... danke – newbieee

Antwort

0

die andere Variable verwenden, anstatt als args[0]:

String str = "ad"; 
if (str.length() > 0) { 
String searchword = str; 

Die Variable args[0] wird als eine Eingabe in die Klasse durch das Hauptverfahren verwendet. Außerdem ist es in Ihrem Fall leer, weil keine Argumente gegeben wurden.

+0

danke mann so viel – newbieee

+0

tatsächlich der Code, den Sie oben sehen, ist nicht von mir geschrieben, deshalb konnte ich nicht o den Code richtig bearbeiten – newbieee

+0

Froh, dass es hilft :) Ja, Die Arbeit mit jemand anderem Code leidet manchmal. –

0

Das Problem ist, dass Ihre args[] leer ist und keine Größe hat, wenn Ihre Anwendung startet. In diesem Fall existiert kein Index 0 und Ihre Zeile mit args[0] = "ad"; schlägt fehl.

Versuchen Sie, Ihre Anwendung mit einem Argument zu starten, anstatt es manuell im Code festzulegen. Wenn Sie keine andere Lösung sehen, erstellen Sie selbst ein Array und legen Sie es als die Variable fest, die mit den Informationen gefüllt ist, die Sie verwenden möchten.