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