从另一个类将.txt读入ArrayList

时间:2018-08-11 00:30:13

标签: java javafx

instructions.txt的{​​{1}}中以instructions.java的逗号分隔方法读取,以便可以将其呈现到InstructionsController上的TextArea中。

一旦我读完文件,就很难弄清楚如何将Instructions.xml传递给另一个类以成功使用该数据。

使用ArrayList中的about作为handle类中的测试按钮。

Instructions.java

InstructionsController

InstructionsController.java

public class Instructions {

    private String[] identifier;

    private ArrayList<String> listName;
    private ArrayList<String> listDesc;

    public void dataLoader() {

        String fileName = "instructions.txt";
        Scanner scan;

        /*
         * Shows working path System.out.println(newFile(".").getAbsoluteFile());
         */

        try {
            scan = new Scanner(new File(fileName));
            // Iteration rather than iterable
            while (scan.hasNext()) {
                int i = 0;
                String line = scan.nextLine();
                identifier = line.split(">");

                if(identifier[i].equals("TITLE")) {
                    listName.add(identifier[i+1]);
                } else if (identifier[i].equals("DESC")) {
                    listDesc.add(identifier[i+1]);
                } else if (identifier[i].equals("END")) {
                     i++;
                }
            }
            scan.close();
        } catch (FileNotFoundException exception) {
            System.err.println("Failed to open instructions");
            System.exit(1);
        }catch (Exception e) {
            e.printStackTrace();
        }
    }

    public ArrayList<String> getListName() {
        return listName;
    }

    public void setListName(ArrayList<String> listName) {
        this.listName = listName;
    }

    public ArrayList<String> getListDesc() {
        return listDesc;
    }

    public void setListDesc(ArrayList<String> listDesc) {
        this.listDesc = listDesc;
    }
}

示例文字 文件输入:instructions.txt

  

TITLE>职业津贴:

     

DESC>投资者:从$ 150奖金“启动现金”开始,总共有650美元的“启动现金”。   农夫:以250磅的“食物”开始,并且有特权以75%的速度为聚会消费食物。   杂工:“旅行车”崩溃的可能性大大降低。

     

END>

1 个答案:

答案 0 :(得分:0)

您可以尝试在第二个类文件中创建第一个类的实例。或者,您可以尝试将“获取”方法设置为静态。看一下以前的答案。

  

您需要创建A类的实例,然后访问B类的值,例如:

public class ClassA {
  private int someInt;

  public ClassA() {
    someInt = 5;
  }

  public int getSomeInt() {
    return someInt;
  }
}

public class ClassB {
  public void someMethod() {
    ClassA instanceOfClassA = new ClassA();

    int someIntFromClassA = instanceOfClassA.getSomeInt();  //This is now 5;

    // Rest of your code here
  }
}
  

或者,您可以在ClassA中将其创建为静态方法,然后使用ClassBClassA.getSomeInt();中对其进行调用

Passing an array from class A to class B