Java 将ArrayList从一个类传递到另一个类

Java 将ArrayList从一个类传递到另一个类,java,class,arraylist,Java,Class,Arraylist,我对Java比较陌生,所以如果我犯了任何明显的错误,请道歉。我试图将ArrayList“number”从类“IO”传递到类“Interaction”。我正在尝试将数字的内容打印到控制台作为测试。当我调用getNumbers方法时,控制台保持为空。我做错了什么?以下是我所拥有的: IO类: import java.io.*; import java.util.*; public class IO { public static void main (String[] args){

我对Java比较陌生,所以如果我犯了任何明显的错误,请道歉。我试图将ArrayList“number”从类“IO”传递到类“Interaction”。我正在尝试将数字的内容打印到控制台作为测试。当我调用getNumbers方法时,控制台保持为空。我做错了什么?以下是我所拥有的:

IO类:

import java.io.*;
import java.util.*;

public class IO {
    public static void main (String[] args){
        fileInput();
    }
    public static void fileInput() {
        //variable setup
        String file = "src/seats.txt";
        int number;

        ArrayList<Integer> numbers = new ArrayList<Integer>();


        //Read file into the ArrayLists
        try {
            Scanner input = new Scanner(new FileReader(file));

            while (input.hasNextLine()){    //read a line from file
                number = input.nextInt();
                input.nextLine();

                numbers.add(number);
            }
            input.close();
        }
        catch (IOException e){
            System.out.println(e);
        }
        public static ArrayList<Integer> getNumbers(){
            ArrayList<Integer> numbers = new ArrayList<Integer>();
            return numbers;
        }
    }
import java.io.*;
导入java.util.*;
公共类IO{
公共静态void main(字符串[]args){
fileInput();
}
公共静态void fileInput(){
//变量设置
String file=“src/seats.txt”;
整数;
ArrayList编号=新的ArrayList();
//将文件读入ArrayList
试一试{
扫描仪输入=新扫描仪(新文件读取器(文件));
while(input.hasNextLine()){//从文件中读取一行
number=input.nextInt();
input.nextLine();
数字。添加(数字);
}
input.close();
}
捕获(IOE异常){
系统输出打印ln(e);
}
公共静态ArrayList getNumbers(){
ArrayList编号=新的ArrayList();
返回号码;
}
}
交互类:

import java.io.*;
import java.util.ArrayList;
import java.util.Scanner;
public class Interaction {

    public static void main(String[] args) {
        menu();
        IO.fileInput();
    }
    static Scanner consoleInput = new Scanner (System.in);
    public static void menu (){
        String userChoice = "";

        while (!userChoice.equals("QUIT")){
            System.out.println("|            MAIN MENU              |");
            System.out.println("|-----------------------------------|");
            System.out.println("|                                   |");
            System.out.println("| 1.) Reserve a Seat                |");
            System.out.println("| 2.) Cancel a Reservation          |");
            System.out.println("| 3.) View Waiting List             |");
            System.out.println("| Quit.) Exit Program               |");
            System.out.println("|                              v0.1 |");
            System.out.println("\nPlease make your selection:");

            userChoice = consoleInput.next().toUpperCase();

            switch(userChoice){
                default:
                if (!userChoice.equals("1") && !userChoice.equals("2") && !userChoice.equals("3")){
                System.out.println("Invalid option, please try again.");
            }
            pause();
            break;
            case "1":
            if (userChoice.equals("1")){
                reserveSeat();
            }
            pause();
            break;
            case "2":
            if(userChoice.equals("2")){
                getNumbers();
                cancel();
            }
            pause();
            break;
            case "3":
            if(userChoice.equals("3")){
                waitingList();
            }
            pause();
            break;
            case "QUIT":
            System.out.println("Thank you for using our service!");
            consoleInput.close();
            }
        }
     }

    private static void reserveSeat() {
        String type, direction, userChoice = null;
        int number;

    private static void cancel() {
        System.out.println("Test 2");
    }
    private static void waitingList() {
        System.out.println("Test 3");
    }
    private static void pause(){
        System.out.println("Press enter to return to the menu.");
        Scanner enter = new Scanner(System.in);
        enter.nextLine();
    }
    public static void getNumbers(){
        ArrayList<Integer> numbers = IO.getNumbers();
        System.out.println();
        int sz = numbers.size();
        for (int i = 0; i < sz; i++){
            System.out.println(numbers.get(i).toString());
        }
    }
}
import java.io.*;
导入java.util.ArrayList;
导入java.util.Scanner;
公共课堂互动{
公共静态void main(字符串[]args){
菜单();
IO.fileInput();
}
静态扫描仪控制台输入=新扫描仪(System.in);
公共静态无效菜单(){
字符串userChoice=“”;
而(!userChoice.equals(“QUIT”)){
System.out.println(“|主菜单|”);
System.out.println(“|---------------------------------------|”);
System.out.println(“| |”);
System.out.println(“| 1.)预订座位|”);
System.out.println(“| 2.)取消预订|”);
System.out.println(“| 3.)查看等待列表|”);
System.out.println(“退出”)退出程序;
System.out.println(“|v0.1 |”);
System.out.println(“\n请选择:”);
userChoice=consoleInput.next().toUpperCase();
开关(用户选择){
违约:
如果(!userChoice.equals(“1”)和&!userChoice.equals(“2”)和&!userChoice.equals(“3”)){
System.out.println(“无效选项,请重试。”);
}
暂停();
打破
案例“1”:
if(userChoice.equals(“1”)){
预留座位();
}
暂停();
打破
案例“2”:
if(userChoice.equals(“2”)){
getNumbers();
取消();
}
暂停();
打破
案例“3”:
if(userChoice.equals(“3”)){
等待列表();
}
暂停();
打破
“退出”案例:
System.out.println(“感谢您使用我们的服务!”);
consoleInput.close();
}
}
}
专用静态空位预留座位(){
字符串类型,方向,userChoice=null;
整数;
私有静态void cancel(){
系统输出打印项次(“测试2”);
}
私有静态void waitingList(){
系统输出打印项次(“测试3”);
}
私有静态无效暂停(){
System.out.println(“按enter键返回菜单”);
扫描仪输入=新扫描仪(系统输入);
enter.nextLine();
}
公共静态void getNumbers(){
ArrayList numbers=IO.getNumbers();
System.out.println();
int sz=numbers.size();
对于(int i=0;i
我知道以前也有人问过类似的问题,但我找不到任何特别有帮助的。任何帮助都将不胜感激


编辑:现在显示整个交互类,而不仅仅是getNumbers()

您希望相同的
数字在
IO.fileInput()
IO.getNumbers()
中可见;您可以添加一个类(
static
numbers
字段,并在这两个位置使用it(并编程到
列表
界面)

private static List<Integer> numbers = new ArrayList<>();
public static List<Integer> getNumbers(){
    return numbers;
}
private static List number=new ArrayList();
公共静态列表getNumbers(){
返回号码;
}

然后,不要忘记从
fileInput
中删除
numbers
声明(这样它就使用了
static
字段)。

您在这里犯了一个严重的错误。您调用了一个静态方法IO.getNumbers()初始化空的ArrayList并返回它。由于您忘记从fileInput()方法获取实际的ArrayList,您可以在IO类中使用以下代码

public class IO {
public static void main (String[] args){
    fileInput();
}
public static ArrayList<Integer> fileInput() {
    //variable setup
    String file = "src/seats.txt";
    int number;

    ArrayList<Integer> numbers = new ArrayList<Integer>();


    //Read file into the ArrayLists
    try {
        Scanner input = new Scanner(new FileReader(file));

        while (input.hasNextLine()){    //read a line from file
            number = input.nextInt();
            input.nextLine();

            numbers.add(number);
        }
        input.close();
    }
    catch (IOException e){
        System.out.println(e);
    }
    return numbers;
}
}
公共类IO{
公共静态void main(字符串[]args){
fileInput();
}
公共静态ArrayList fileInput(){
//变量设置
String file=“src/seats.txt”;
整数;
ArrayList编号=新的ArrayList();
//将文件读入ArrayList
试一试{
扫描仪输入=新扫描仪(新文件读取器(文件));
while(input.hasNextLine()){//从文件中读取一行
number=input.nextInt();
input.nextLine();
数字。添加(数字);
}
input.close();
}
捕获(IOE异常){
系统输出打印ln(e);
}
返回号码;
}
}
然后,您可以按如下方式修改getNumbers方法

public static void getNumbers(){
ArrayList<Integer> numbers = IO.fileInput();
System.out.println();
int sz = numbers.size();
for (int i = 0; i < sz; i++){
    System.out.println(numbers.get(i).toString());
}
publicstaticvoidgetnumbers(){
ArrayList number=IO.fileInput();
System.out.println();
int sz=numbers.size();
对于(int i=0;ipublic static ArrayList<Integer> getNumbers(){
    ArrayList<Integer> numbers = new ArrayList<Integer>();
    return numbers;
}