2017-01-13 4 views
1
import java.io.File; 
import java.io.FileNotFoundException; 
import java.util.*; 

public class gTextFile { 

    static LinkedList<gText> list = new LinkedList<gText>(); 

    public static void main(String[] args) throws FileNotFoundException { 
     Scanner scnOne = new Scanner(System.in); 

     String eCode; 

     System.out.print("Employee Code: "); 
     eCode = scnOne.nextLine(); 

     readFile(); 
     gEmpName("eCode"); 
    } 

    public static void readFile() throws FileNotFoundException { 
     File nFile = new File("C:\\JAVAP\\GetTextFile\\employee.txt"); 
     Scanner scnTwo = new Scanner(nFile); 
     String oTemp; 
      while(scnTwo.hasNext()) { 
      oTemp = scnTwo.next(); 
      String EmCode[] = oTemp.split(" "); 
      String Name[] = EmCode[1].split(","); 
      String idCode = EmCode[0]; 
      String lastname = Name[0]; 
      String firstname = Name[1]; 
      //System.out.println("FName " + firstname); 
      //System.out.println("LName " + lastname); 
      gText gT = new gText(firstname, lastname, idCode); 
      list.add(gT); 
      } 
     scnTwo.close(); 
    } 

    public static void gEmpName(String EmpCode) { 
     Iterator<gText> itr = list.iterator(); 
     while(itr.hasNext()) { 
      gText gT = itr.next(); 
      if(gT.id.equals(EmpCode)){ 
       System.out.println("Employee Name: " + gT.Fname + " " + gT.Lname); 
      } 

     } 

    } 

} 

public class gText { 
String Fname; 
String Lname; 
String id; 

    gText(String First, String Last, String ID) { 
     this.Fname = First; 
     this.Lname = Last; 
     this.id = ID; 

    } 

    public String gFName() { 
     return Fname; 
    } 

    public String gLName() { 
     return Lname; 
    } 

    public String gId() { 
     return id; 
    } 

} 

TextFileТип Spliting Строка и поместить в новый массив в цикле

Каковы проблемы в моем коде ?? конкретный код не отображается при запуске моей программы. Он всегда говорит, что есть проблемы. Это всегда появляется в консоли, когда я кладу код сотрудника. Код Сотрудник: A11-0001 Исключение в потоке "основного" java.lang.ArrayIndexOutOfBoundsException: 1 в gTextFile.readFile (gTextFile.java:28) в gTextFile.main (gTextFile.java:17)

+0

для начала Я думаю, вы хотите 'gEmpName (eCode); // переменная' –

+0

Также проверьте пустые строки в текстовом файле –

+0

Возьмите отладчик (иначе Eclipse) и установите точку останова в строке, где вы получите исключение. Посмотрите на значения 'oTemp' и' EmCode', и вы знаете, что не так. – BetaRide

ответ

1

использования oTemp = scnTwo.nextLine(); вместо oTemp = scnTwo.next(); в вашем методе readFile(). При использовании next() вы просто получаете то, что приходит перед первым пространством, в вашем случае только код сотрудника, поэтому используйте nextLine() для извлечения полной строки. Для получения дополнительных разъяснений по разнице между next() и nextLine() см ссылку ниже

What's the difference between next() and nextLine() methods from Scanner class?

Кроме того, вы можете использовать gEmpName(eCode); вместо gEmpName("eCode");

Ниже приводится код:

public class gTextFile { 

static LinkedList<gText> list = new LinkedList<gText>(); 

public static void main(String[] args) throws FileNotFoundException { 
    Scanner scnOne = new Scanner(System.in); 

    String eCode; 

    System.out.print("Employee Code: "); 
    eCode = scnOne.nextLine(); 

    readFile(); 
    gEmpName(eCode); 
} 

public static void readFile() throws FileNotFoundException { 
    File nFile = new File("/home/path/abc.txt"); 
    Scanner scnTwo = new Scanner(nFile); 
    String oTemp; 
     while(scnTwo.hasNext()) { 
     oTemp = scnTwo.nextLine(); 
     String EmCode[] = oTemp.split(" "); 
     String Name[] = EmCode[1].split(","); 
     String idCode = EmCode[0]; 
     String lastname = Name[0]; 
     String firstname = Name[1]; 
     gText gT = new gText(firstname, lastname, idCode); 
     list.add(gT); 
     } 
    scnTwo.close(); 
} 

public static void gEmpName(String EmpCode) { 
    Iterator<gText> itr = list.iterator(); 
    while(itr.hasNext()) { 
     gText gT = itr.next(); 
     if(gT.id.equals(EmpCode)){ 
      System.out.println("Employee Name: " + gT.Fname + " " + gT.Lname); 
     } 

    } 

} 

}

+0

Я попытался использовать nextLine(), но когда я запустил его, он только поместил код в eCode и ничего не отображается в консоли. и когда я использую next(), возникает проблема с кодом String Name [] = EmCode [1] .split (","); в методе readFile(). это выходит всегда, исключение в потоке "главный" java.lang.ArrayIndexOutOfBoundsException: 1 \t в gTextFile.readFile (gTextFile.java:28) \t в gTextFile.main (gTextFile.java:17) – Sethoy

+0

@sethoy обновленный ответ и включил код. Попробуйте запустить его. –

Смежные вопросы