0

Мне сложно понять, почему работают только части моего кода. Я извлекаю из файла txt данные, которые отвечают на вопросы, которые пользователь предлагает ответить. это моя ошибка:Статистическое приложение Titanic

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0 at TestTitanic.filler(TestTitanic.java:13) at TestTitanic.main(TestTitanic.java:41)

C:\Users\Jznica Sabatini\AppData\Local\NetBeans\Cache\8.1\executor-snippets\run.xml:53:

Java returned: 1 BUILD FAILED (total time: 0 seconds)

Вот строки 13, 41, и я кладу в 53, хотя я не уверен, что это ошибка.

line 13 String content = new Scanner(new File(args[0])) 
line 41 runner.filler(args); 

Так у меня есть тестовый класс (где приведенные выше примеры являются из, класса титанового, и хотя, вероятно, нет необходимости, вспомогательный класса для Титаника с распространяющим методом, но все это компилируется, его только что, когда i компилируется в строке cmd, а тестовый класс работает с файлом titanic.txt, так как cmd ln аргументирует только 3 из 7 вопросов, когда пользователь запрашивает ответ на самом деле.

Ниже приведен мой класс TestTitanic. Я использовал netbeans и позволяя изменить его с помощью предложений, и теперь я даже не получаю свой cmd ln, чтобы печатать вопросы или предлагать пользователю вводить их ответ. В сетевых компонентах он говорит, что мой тестовый класс - это то, где мои ошибки, но с учетом числа из строка, ошибка в моей строке cmd, я знаю, что это мой оригинальный родительский класс Titanic, но пока я начну с меньших ошибок.

import java.io.File; 
import java.io.FileNotFoundException; 
import java.util.Scanner; 

public class TestTitanic { 

    // Method that builds a 2D array from the txt file 
    public void filler(String[] args) { 

     // Try-catch is needed for passing args to method 
     try { 
      // Turns the txt file into one large string 
      String content = new Scanner(new File(args[0])); 
        .useDelimiter("\\Z") // To the end of the file 
        .next(); 
      String[] rows = content.split("\n"); // Breaks up by new line 
      // Creates a 2D array as "long" as the input file 
      String[][] titanic = new String[rows.length][]; 

      // Fills the 2D array 
      for (int i = 0; i < rows.length; i++) { 
       titanic[i] = rows[i].split("\\t"); 
      } 

      // Creates a new Titanic object 
      Titanic titanicObject = new Titanic(titanic); 
      // Calls the passToMenu method from Titanic class 
      titanicObject.passToMenu(); 

     } catch (FileNotFoundException e) { 
      System.out.println("File not found."); 
     } 

    } 

    public static void main(String[] args) { 

     // Create an object from this class 
     TestTitanic runner = new TestTitanic(); 
     // Calls the program method to fill the array 
     Runnable runnable = new Runnable() { 
      @Override 
      public void run() { 
       runner.filler(args); 
      } 
     }; 

    } 
} 
+0

Линия 13 do В конце концов нет точки с запятой! Кроме того, приложите свои строки кода к and. –

+0

Любая причина, почему вы делаете новую тему внутри своей основной темы? Кажется, вы не намерены многопоточно. Кроме того: «... я использовал netbeans и позволяю менять его с помощью предложений» <- в этом заключается безумие, только принимайте предложения, если вы их понимаете. –

+0

, поэтому я исправил его и вернусь к исходной проблеме ввода текста в свой ответ на вопрос и получения нескольких ошибок из-за ошибок в зависимости от того, на какой вопрос я хочу ответить. Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1 at Titanic.perishedPercent(Titanic.java:40) //line 40 if (row[1].equals("0")) { Это всего лишь один из многих примеров только одной ошибки, но опять же, если вы хотите увидеть больше, я буду более чем счастлив предоставить его для лучшего понимания. – 3monkeys1gorilla

ответ

0

Вы можете не предоставлять аргумент командной строки для вашей программы, следовательно, получить java.lang.ArrayIndexOutOfBoundsException: 1 в

String content = new Scanner(new File(args[0]));

Поскольку вы используете Netbeans IDE вы можете передать аргумент командной строки программы, как: using-command-line-arguments-in netbeans

pass-command-line-arguments-netbeans-ide

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