2015-04-30 8 views
-1

Функция разделения не работает. для последнего оператора печати он дает мне ошибку arrayoutofbound. Любая помощь?Пока цикл работает один раз?

while (inFile.hasNext()) 
      { 
       String clean = inFile.nextLine(); 
       String[] nm = clean.split(","); 
       for (int i = 0; i < nm.length; i++) 
       { 
        System.out.println("at index "+ i +" string is "+nm[i]); 
       } 
       System.out.print("at index"+2+"Strin"+nm[3]); 
      } 

текстовый файл:

input1,2,3,4,5 
input2,2,3,4,5 
input3,3,4,5,6 
input4,3,4,5,6 
input5,3,4,5,6 

выход:

at index 0 string is input1 
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3 
    at filereader.FileReader.main(FileReader.java:33) 
Java Result: 1 
+0

использование 'ReadLine()' 'из BufferReader' –

+0

я не получаю исключение, когда я запускаю его. – ajb

+2

Попробуйте добавить 'System.out.println (Arrays.toString (nm))', чтобы узнать, что находится в массиве. Если этот вывод не делает вашу проблему ясной, отредактируйте свой вопрос и добавьте вывод. Возможно, это даст нам представление о том, что еще нужно искать. – ajb

ответ

1

код, кажется, собственно мне и это не должно терпеть неудачу, как это. Единственная причина, я могу видеть, если есть пустая строка в вашем входном файле, в этом случае System.out.print("at index"+2+"Strin"+nm[3]); возвратит ArrayOutOfBoundException в nm[3]

В качестве альтернативы вы можете написать код так:

while (inFile.hasNext()) 
     { 
      String clean = inFile.nextLine(); 
      if(clean != null && clean != ""){ 
      String[] nm = clean.split(","); 
      for (int i = 0; i < nm.length; i++) 
      { 
       System.out.println("at index "+ i +" string is "+nm[i]); 
      } 
      System.out.print("at index"+2+"Strin"+nm[3]); 
      } 
     } 

Надежда это работает ,

+0

все еще не работает. Понятия не имею почему. – DkgMarine

+0

неправильное расположение файла. Благодарю! – DkgMarine

1

Это дает ошибку:

System.out.print("at index"+2+"Strin"+nm[3]); 

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

System.out.print("at index"+2+"Strin"+nm[nm.length-1]); 
1

Может быть, массив нм не имеет 4 элемента в строке

System.out.print("at index"+2+"Strin"+nm[3]); 

Убедитесь, что массивы содержит по меньшей мере 4 элемента перед печатью 4-й элемент.

// create a new scanner with the specified String Object 
    Scanner inFile = new Scanner(s); 
    while (inFile.hasNext()) 
    { 
     String clean = inFile.nextLine(); 
     String[] nm = clean.split(","); 
     for (int i = 0; i < nm.length; i++) 
     { 
      System.out.println("at index "+ i +" string is "+nm[i]); 
     } 
     if (nm.length > 3) { 
      System.out.print("at index"+2+"Strin"+nm[3]); 
     } 
     } 
Смежные вопросы