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