Java 移动到另一个类时,ArrayList将清空

Java 移动到另一个类时,ArrayList将清空,java,Java,这里是完全基础的java学生。我在AP Comp sci项目中遇到了一个问题,当我在菜单类中为我的cartClass创建对象时,我得到了一个很长的错误列表(一遍又一遍地重复这些行): 线程“main”java.lang.StackOverflower中出现异常 在ICSMenuClass。(ICSMenuClass.java:27) 在ICSCartClass.(ICSCartClass.java:20) 现在我关心的另一个问题是,当我向item和itemprice ArrayList添加元素

这里是完全基础的java学生。我在AP Comp sci项目中遇到了一个问题,当我在菜单类中为我的cartClass创建对象时,我得到了一个很长的错误列表(一遍又一遍地重复这些行):

线程“main”java.lang.StackOverflower中出现异常 在ICSMenuClass。(ICSMenuClass.java:27) 在ICSCartClass.(ICSCartClass.java:20) 现在我关心的另一个问题是,当我向item和itemprice ArrayList添加元素时,当我转到cart类时,它们不会存储在ArrayList中(代码非常混乱,而且我只将项目添加到'item'和'itemprice'ArrayList):

import java.util.*;
公共类ICSMenuClass扩展了Objclass{
//公共静态void main(字符串[]args)
//  {
//      
//ICSMenuClass i1=新ICSMenuClass();
//系统输出打印LN(i1);
//  }
ArrayList ItemName=新的ArrayList();
ArrayList ItemPrice=新的ArrayList();
public ArrayList item=new ArrayList();
public ArrayList itemprice=new ArrayList();
ICSCartClass icsc2=新ICSCartClass();
ICSMenuClass icsm2=新ICSMenuClass();
//public ArrayList item=new ArrayList();
//public ArrayList itemprice=new ArrayList();
//public ICSCartClass icsc1=新ICSCartClass();
公共扫描仪扫描=新扫描仪(System.in);
公共ICSMenuClass()
{
//超级(项目,项目价格);
//项目。添加(“柠檬”);
//this.item=项目;
//this.ItemPrice=ItemPrice;
iteminfo();
}
public void iteminfo()
{
字符串user=“admin”;
字符串uselessfiller=“null”;
字符串addItem=“addItem”;
字符串removietem=“removietem”;
字符串changePrice=“changePrice”;
字符串gocart1=“GoCart”;
//最终ArrayList合并=新ArrayList();
//item.addAll(itemprice);
System.out.println(“这是谁?”);
字符串userused=scan.nextLine();
字符串viewInventory=“见库存”;
if(userused.equalsIgnoreCase(用户))
{
int j=1;
而(j<2)
{
System.out.println(“是否要编辑项目?是/否”);
字符串回答;
字符串yes1=“y”;
答案=scan.nextLine();
如果(回答等于(是1))
println(“您想做什么?(输入:addItem,removietem,changePrice,请参阅库存,GoCart)”;
//scan.nextLine();
字符串ans1=scan.nextLine();
//------------------------------------------------------------------------------------------------
//添加项
//------------------------------------------------------------------------------------------------
如果(ans1.equals(addItem))
{
AddItemtoInventory();
}否则{
//---------------------------------------------------------------------------------------------------------------
//删除项目
//---------------------------------------------------------------------------------------------------------------
if(ans1.equals(removietem))
{
RemoveItemfromInventory();
}否则{
//-------------------------------------------------------------------------------------------------------------
//变价
//-------------------------------------------------------------------------------------------------------------
如果(ans1.等于(变更价格))
{
ChangePriceofItem();
}否则{
//------------------------------------------------------------------------------------------------------------------------------------
//查看库存
//------------------------------------------------------------------------------------------------------------------------------------
if(ans1.equals(视图库存))
{
检查库存();
}否则{
if(ans1.equals(gocart1)){
this.item=ItemName;
this.itemprice=itemprice;
icsm2.GotoCart();
}否则{
如果(ans1==“n”){
//AccountLogin acctlogn1=新AccountLogin();
//系统输出打印项次(acctlogn1);
System.out.println(“Ok”);
}
}
}   }}}}}   
}
//将项目添加到库存
公共无效AddItemtoInventory()
{
System.out.println(“好的,您想添加多少项?”);
int i=1;
int desireditemnumb1=scan.nextInt();

while(i当您在ICSMenuClass的
iteminfo()
方法中初始化J时。您在函数中的任何位置都不会递减它。这意味着您的循环将永远不会结束
,而(J<2)
将始终为真

声明了许多无用的变量,这使得很难理解流程,例如

String yes1 = "y";

你可以做
if(answer.equals(“y”))
以避免声明额外的变量。

您的item和itemprice变量对于ICSMenuClass来说只是全局变量。如果您想访问其他类,则必须在声明对象时将其传递给构造函数。否则,您将无法在其他类中获得值,因此还有太多的代码需要查看。我认为它具有lot of errors String filler1=“null”;String useless1=scan.nextLine();useless1=filler1;这些代码行实际上有点无用。您正在从UI输入一些内容,然后将其替换为“null”字符串。读取某些内容并替换它是没有用的。是的,我知道这些内容上的代码太多了,但我想知道我的错误在哪里,看看那里是否还有错误。还有,我如何执行之前的操作?我不知道如何使其全局化
import java.util.*;
public class ICSMenuClass extends Objclass{

//  public static void main(String[] args)
//  {
//      
//      ICSMenuClass i1 = new ICSMenuClass();
//      System.out.println(i1);
//  }

ArrayList<String> ItemName = new ArrayList<String>();
ArrayList<Double> ItemPrice = new ArrayList<Double>();
public ArrayList<String> item = new ArrayList<String>();
public ArrayList<Double> itemprice = new ArrayList<Double>();
ICSCartClass icsc2 = new ICSCartClass();
ICSMenuClass icsm2 = new ICSMenuClass();

//public ArrayList<String> item = new ArrayList<String>();
//public ArrayList<Double> itemprice = new ArrayList<Double>();
//public ICSCartClass icsc1 = new ICSCartClass();

public Scanner scan = new Scanner(System.in);


public ICSMenuClass()
{

    //super(item, itemprice);
    //item.add("Lemon");
//      this.item = item;
//      this.ItemPrice = ItemPrice;
    iteminfo();
}






public void iteminfo()
{


    String user = "admin";  
    String uselessfiller = "null";
    String addItem = "addItem";
    String removeItem = "removeItem";
    String changePrice =  "changePrice";
    String gocart1 = "GoCart";



    //final ArrayList<String> combined = new ArrayList<String>();

    //item.addAll(itemprice);


    System.out.println("Who is this?");
    String userused = scan.nextLine();
    String viewInventory = "SeeInventory";

    if(userused.equalsIgnoreCase(user))
    {
        int j = 1;
        while(j < 2)
        {
        System.out.println("Would you like to edit an item? y/n");
        String answer;
        String yes1 = "y";

        answer = scan.nextLine();

        if(answer.equals(yes1))

            System.out.println("What would you like to do?  (Type: addItem, removeitem, changePrice, SeeInventory, GoCart)");
            //scan.nextLine();
            String ans1 = scan.nextLine();


                //------------------------------------------------------------------------------------------------
                //Add Item
                //------------------------------------------------------------------------------------------------
                if(ans1.equals(addItem))
                {
                    AddItemtoInventory();

                }else{





                //---------------------------------------------------------------------------------------------------------------
                //Remove Items
                //---------------------------------------------------------------------------------------------------------------

                if(ans1.equals(removeItem))
                {
                 RemoveItemfromInventory();

                }else{
                //-------------------------------------------------------------------------------------------------------------
                //Change Price
                //-------------------------------------------------------------------------------------------------------------


                if(ans1.equals(changePrice))
                {
                    ChangePriceofItem();

                }else{
                //------------------------------------------------------------------------------------------------------------------------------------
                //View Inventory
                //------------------------------------------------------------------------------------------------------------------------------------


                if(ans1.equals(viewInventory))
                {
                    CheckInventory();
                }else{


                if(ans1.equals(gocart1)){

                    this.item = ItemName;
                    this.itemprice = ItemPrice;
                    icsm2.GotoCart();
                }else{

                if(ans1 == "n"){
                            //AccountLogin acctlogn1 = new AccountLogin();
                            //System.out.println(acctlogn1);
                            System.out.println("Ok");
                        }
                    }

                }   }}}}}   

}



//Adding item to inventory





public void AddItemtoInventory()
{
    System.out.println("Ok, how many items would you like to add?");
    int i = 1;
    int desireditemnumb1 = scan.nextInt();

    while (i <= desireditemnumb1)
    {

        String filler1 = "null";
        String useless1 = scan.nextLine();
        useless1 = filler1;
        System.out.println("Ok, enter item #" + i + " and the ISBN number   after it.");



        String itemname = scan.nextLine();
        item.add(itemname);


        System.out.println("Please add a price to the item: ");
        Double itemprice1 = scan.nextDouble();
        itemprice.add(itemprice1);

//          System.out.println("Please set the amount of the item to add to the inventory: ");
//          int i2 = scan.nextInt();
//          for(int j = 0; j < i2; j++)
//          {
//          invAmount.add(itemname);
//          }


        System.out.println("Added " + itemname + " to inventory");
        i++;
    }

    System.out.println("would you like to see your inventory?");
    scan.nextLine();
    String seeinventory1 = scan.nextLine();

    if(seeinventory1.equals("y"))
    {
        System.out.println(item + "\n" + itemprice);


    }else{
        System.out.println("Ok...");


    }
}



//Removing item method

public void RemoveItemfromInventory()
{

    System.out.println("Ok, how many items would you like to remove?");



    int i = 1;
    int desireditemnumb1 = scan.nextInt();

    while(i <= desireditemnumb1)
    {
            System.out.println("Ok, type the number which the item is allocated");
            System.out.println(item);
            int index1 = scan.nextInt();
            item.remove(index1);
            itemprice.remove(index1);

            System.out.println("Removed " + item.get(index1) + " from inventory");
            i++;
    }


    String yes1 = "y";
    System.out.println("Would you like to see your inventory?");
    String yes2 = scan.nextLine();



    if(yes2.equals(yes1))

    System.out.println(item + "\n" + itemprice);
}





public void ChangePriceofItem()
{

    System.out.println("Ok, type the number which the item is allocated");
    System.out.println(item);

    int index1 = scan.nextInt();

    System.out.println("Ok, now choose the price the item will cost");
    double itemprice1 = scan.nextDouble();
    itemprice.set(index1, itemprice1);
    System.out.println("Changed price of " + item.get(index1) + " within inventory");

}





public void CheckInventory()
{

    System.out.println(item + "\n" + itemprice + "\n" + invAmount);
    double sum = 0;

    for (double i : itemprice)
        sum += i;
    System.out.println("The value of the inventory: " + "$" + sum);
}



public void GotoCart()
{

    System.out.println(icsc2);
}
}
import java.util.*;
public class ICSCartClass extends ICSMenuClass{

public Scanner scan = new Scanner(System.in);

public ArrayList<Double> ItemPrice1 = new ArrayList<Double>();


//  public static void main(String[] args)
//  {
//      
//      
//      ICSCartClass c1 = new ICSCartClass();
//      System.out.println(c1);
//  }




public ICSCartClass()
{
    //super(item, itemprice);
    addItemDefaults();
}



public void addItemDefaults()
{


    ItemName.addAll(item);
    ItemPrice.addAll(itemprice);

    WhatDoCart();
}


public void WhatDoCart()
{


    System.out.println("What do you want to do with the cart? ");

    System.out.println("Plese choose the number that shows what you want to do: ");
    System.out.println("Add an item = 1" + "\t\t" + "Remove an item = 2" + "\t" + "Exchange an item = 3" + "\t" + "Checkout cart = 4");

    int cartans1 = scan.nextInt();

    if(cartans1 == 1)
        AddItemstoCart();

    if(cartans1 == 2)
        RemoveItemsfromCart();

    if(cartans1 == 3)
        ExcangeItemsinCart();

    if(cartans1 == 4)
        CheckoutCartNow();






}

public void AddItemstoCart()
{

    int i = -1;

    while(i < cart.size())
    {



        System.out.println("What item do you want to add? Press 9 to checkout.");
        System.out.println(ItemName  + "\n" + ItemPrice1);
        int ItemAns1 = scan.nextInt();

        if(ItemAns1 == 9)
        {
            WhatDoCart();
        }else{

        String Itemname2 = item.get(ItemAns1);
        int index1 = item.indexOf(ItemAns1);
        double getprice = itemprice.indexOf(index1);
        cartPrice.add(getprice);

        cart.add(Itemname2);

        System.out.println(cart);
        i++;
        }

    }   



}



public void RemoveItemsfromCart()
{

    int i = -1;

    while(i < cart.size())
    {



        System.out.println("What item do you want to remove (You must have at least 2 items for checkout)? Press 9 to checkout.");
        System.out.println(cart);
        int ItemAns1 = scan.nextInt();

        if(ItemAns1 == 9)
        {
            WhatDoCart();
        }else{

        String Itemname2 = cart.get(ItemAns1);
        cart.remove(Itemname2);
        int index1 = cartPrice.indexOf(ItemAns1); 
        cartPrice.remove(index1);
        System.out.println(cart);
        i++;
        }

    }   





}





public void ExcangeItemsinCart()
{


    int i = -1;

    while(i < cart.size())
    {



        System.out.println("What item do you want to exchange? Press 9 to checkout.");
        System.out.println(ItemName);
        int ItemAns1 = scan.nextInt();

        if(ItemAns1 == 9)
        {
            WhatDoCart();
        }else{

        String Itemname2 = ItemName.get(ItemAns1);
        cart.set(ItemAns1, Itemname2);
        System.out.println(cart);
        i++;
        }

    }   




}





public void CheckoutCartNow()
{
    System.out.println("    Do you want to check out the cart now? y/n");
    scan.nextLine();
    String Ans1 = scan.nextLine();


    if(Ans1 == "y")
    {
        CarttoString();
    }else{
        if(Ans1 == "n")
        {
            WhatDoCart();
        }

        }
}





public void CarttoString()
{
    cart.clear();

    //ItemAmount.add(ItemPrice);



}

}
public void iteminfo()
{


    String user = "admin";  

//      String addItem = "addItem";
//      String removeItem = "removeItem";
//      String changePrice =  "changePrice";
//      String gocart1 = "GoCart";



    //final ArrayList<String> combined = new ArrayList<String>();

    //item.addAll(itemprice);


    System.out.println("Who is this?");
    String userused = scan.nextLine();
    String viewInventory = "SeeInventory";

    if(userused.equalsIgnoreCase(user))
    {
        int j = 1;
        while(j < 2)
        {
        System.out.println("Would you like to edit an item? y/n");
        String answer;
        //String yes1 = "y";

        answer = scan.nextLine();

        if(answer.equals("y"))

            System.out.println("What would you like to do?  (Type: addItem, removeitem, changePrice, SeeInventory, GoCart)");
            //scan.nextLine();
            String ans1 = scan.nextLine();


                //------------------------------------------------------------------------------------------------
                //Add Item
                //------------------------------------------------------------------------------------------------
                if(ans1.equals("addItem"))
                {
                    AddItemtoInventory();

                }else{





                //---------------------------------------------------------------------------------------------------------------
                //Remove Items
                //---------------------------------------------------------------------------------------------------------------

                if(ans1.equals("removeItem"))
                {
                 RemoveItemfromInventory();

                }else{
                //-------------------------------------------------------------------------------------------------------------
                //Change Price
                //-------------------------------------------------------------------------------------------------------------


                if(ans1.equals("changePrice"))
                {
                    ChangePriceofItem();

                }else{
                //------------------------------------------------------------------------------------------------------------------------------------
                //View Inventory
                //------------------------------------------------------------------------------------------------------------------------------------


                if(ans1.equals("SeeInventory"))
                {
                    CheckInventory();
                }else{


                if(ans1.equals("GoCart")){
                    j++;
                    this.item = ItemName;
                    this.itemprice = ItemPrice;
                    GotoCart();
                }else{

                if(ans1 == "n"){
                            //AccountLogin acctlogn1 = new AccountLogin();
                            //System.out.println(acctlogn1);
                            System.out.println("Ok");
                            break;
                        }

                    }

                    }   
                    }
                    }
                    }

                }
        }   

}
String yes1 = "y";