Java arraylist的值在meny中不断重置

Java arraylist的值在meny中不断重置,java,arrays,arraylist,Java,Arrays,Arraylist,我将尽我所能解释这一点。在学校里,我们正在制作一个程序,允许您选择是制作数组还是数组列表,然后向其中添加数字。那部分很好用 问题是在菜单中,您还将获得将数组转换为ArrayList的选项,反之亦然。当我尝试使用case开关将数组或arraylist发送到类时,我得到一个错误,即我尚未初始化。但是,如果我将它设置为null以开始,它将在下次启动meny时重置用户输入。所以我想知道是否有一种方法可以初始化数组和arraylist一次,然后下次跳过它?我知道这是一个不好的解释,但如果你看看代码,也许你

我将尽我所能解释这一点。在学校里,我们正在制作一个程序,允许您选择是制作数组还是数组列表,然后向其中添加数字。那部分很好用

问题是在菜单中,您还将获得将数组转换为ArrayList的选项,反之亦然。当我尝试使用case开关将数组或arraylist发送到类时,我得到一个错误,即我尚未初始化。但是,如果我将它设置为null以开始,它将在下次启动meny时重置用户输入。所以我想知道是否有一种方法可以初始化数组和arraylist一次,然后下次跳过它?我知道这是一个不好的解释,但如果你看看代码,也许你明白我想问什么

package labb;

import java.util.ArrayList;
import java.util.Scanner;


public class Meny {

    @SuppressWarnings("resource")
    public static boolean meny(Scanner input){

        Scanner inputMeny = new Scanner(System.in);

        ArrayList<Integer> arrayListNumbers = null;

        System.out.println("\n What do you want to do? \n 1 : Arraylist? \n 2 : Array? \n 3 : Convert your Array to an Arraylist \n 4 : Convert your Arraylist to an Array \n 5 : Exit");

        int answer = inputMeny.nextInt();

        switch(answer){
        case(1)://arrayList

           arrayListNumbers = Array.readNumbersFromUser(input);
           PrintNumbers.PrintOutNumbers(arrayListNumbers);
           System.out.println("\n");
           PrintNumbers.PrintOutNumbers2(arrayListNumbers);
           return true;

        case(2)://array

           int[] arrayNumbers = Array.readNumbersFromUserArray(input);
           PrintNumbers.printNumbersArray(arrayNumbers);
           System.out.println();
           PrintNumbers.printNumbers2Array(arrayNumbers);
           return true;

        case(3)://array to arrayList

        case(4)://arrayList to array

        int[] array = Convert.convertArrayListToArray(arrayListNumbers);

        case(5):
           System.out.println("Good bye");
           inputMeny.close();
           return false;

        default:
            System.out.println("Wrong input");
            inputMeny.close();
            return false;
        }

    }
}
封装labb;
导入java.util.ArrayList;
导入java.util.Scanner;
公共类菜单{
@抑制警告(“资源”)
公共静态布尔菜单(扫描仪输入){
扫描仪输入Y=新扫描仪(System.in);
ArrayList ArrayListNumber=null;
System.out.println(“\n您想做什么?\n 1:Arraylist?\n 2:Array?\n 3:将数组转换为Arraylist\n 4:将Arraylist转换为数组\n 5:退出”);
int answer=inputMeny.nextInt();
开关(应答){
案例(1)://arrayList
arrayListNumbers=Array.readNumbersFromUser(输入);
打印编号。打印输出编号(ArrayListNumber);
System.out.println(“\n”);
打印编号。打印输出编号2(ArrayList编号);
返回true;
案例(2)://数组
int[]ArrayNumber=Array.ReadNumberFromUserArray(输入);
打印号码。打印号码数组(ArrayNumber);
System.out.println();
打印号码。打印号码2Array(ArrayNumber);
返回true;
案例(3)://数组到arrayList
案例(4)://arrayList到array
int[]数组=Convert.convertarylisttoarray(arrayListNumbers);
案例(5):
System.out.println(“再见”);
inputMeny.close();
返回false;
违约:
System.out.println(“错误输入”);
inputMeny.close();
返回false;
}
}
}

不要调用公共静态布尔菜单(扫描仪输入),而要调用公共静态布尔菜单(扫描仪输入,ArrayList ArrayListNumber)。从调用此方法(meny)的位置,获取ArrayListNumber

所以你的代码可能看起来像这样

在这里调用方法

ArrayList<Integer> arrayListNumbers = Array.readNumbersFromUser(input);
meny.meny(input, arrayListNumbers );
ArrayList arrayListNumbers=Array.readNumbersFromUser(输入);
meny.meny(输入,ArrayListNumber);
班级呢

public class Meny {

    @SuppressWarnings("resource")
    public static boolean meny(Scanner input, ArrayList<Integer> arrayListNumbers){

        Scanner inputMeny = new Scanner(System.in);


        System.out.println("\n What do you want to do? \n 1 : Arraylist? \n 2 : Array? \n 3 : Convert your Array to an Arraylist \n 4 : Convert your Arraylist to an Array \n 5 : Exit");

        int answer = inputMeny.nextInt();
.....
公共类菜单{
@抑制警告(“资源”)
公共静态布尔菜单(扫描仪输入,ArrayList ArrayList编号){
扫描仪输入Y=新扫描仪(System.in);
System.out.println(“\n您想做什么?\n 1:Arraylist?\n 2:Array?\n 3:将数组转换为Arraylist\n 4:将Arraylist转换为数组\n 5:退出”);
int answer=inputMeny.nextInt();
.....

ArrayList ArrayList numbers=null;这是您的问题,您每次调用meny(scanner)都会得到一个新的ArrayList。非常感谢!这使所有内容都可以完美地工作,只需对其他类进行一点重新设计:)