Java 如何在方法中添加静态变量号?
我创建了一个ProductMenu类来执行添加、搜索、删除和更新产品任务,它只使用数组。我面临的问题是如何在方法中添加静态变量,因为在将产品添加到数组中后,我未能添加最大数量的数组。希望能帮到你,谢谢你Java 如何在方法中添加静态变量号?,java,arrays,methods,static,main,Java,Arrays,Methods,Static,Main,我创建了一个ProductMenu类来执行添加、搜索、删除和更新产品任务,它只使用数组。我面临的问题是如何在方法中添加静态变量,因为在将产品添加到数组中后,我未能添加最大数量的数组。希望能帮到你,谢谢你 public static void addProduct(){ Product product = new Product(); System.out.println("================================"); Syste
public static void addProduct(){
Product product = new Product();
System.out.println("================================");
System.out.println(" Add Product ");
System.out.println("================================");
System.out.println("Product ID :- " + Product.getProdId());
System.out.print("Enter product name: ");
String prodName = input.next();
System.out.print("Enter product price: ");
double prodPrice = input.nextDouble();
product.setProductId(Product.getProdId());
product.setProductName(prodName);
product.setProductPrice((double)prodPrice);
products[productIndex] = product;
numOfArray++; // should be add ?
productIndex++; // should be add also?
ProductMenu.main(null); //back to main
}
我的班级
public class ProductMenu {
static Scanner input = new Scanner(System.in);
static int productIndex; //should be add after addProduct()
static int numOfArray = 1; //should be add after addProduct()
static Product[] products = new Product[numOfArray];
public static void main(String[] args) {
int menuOption;
do{
menu();
System.out.print("Enter your choice: ");
menuOption = input.nextInt();
switch(menuOption){
case 1:
addProduct();
break;
case 2:
System.out.print("halo" + products[0].toString());
break;
case 3:
break;
case 4:
break;
default:
System.out.print("Invalid option. Please try
again.\n");
break;
}
}while(menuOption!=1 && menuOption!=2 && menuOption!=3 &&
menuOption!=4 );
}
public static void menu(){
System.out.println("================================");
System.out.println(" Product Menu ");
System.out.println("================================");
System.out.println("1. Insert Product\n2. Update Product\n3.
Search Product\n4. Delete Product\n");
}
这是错误消息,表示数组数已经超过限制,为什么我会问我是否错了
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1
at ProductMenu.addProduct(ProductMenu.java:64)
at ProductMenu.main(ProductMenu.java:21)
at ProductMenu.addProduct(ProductMenu.java:68)
at ProductMenu.main(ProductMenu.java:21)
我想知道您是否可以在代码中用arraylist替换array。arraylist由后台的数组支持,在处理数据时不必担心arrayindexoutofbound异常我想知道您是否可以在代码中用arraylist替换arraylist。ArrayList由后台的数组支持,在处理数据时不必担心arrayindexoutofbound异常。我会使用ArrayList或LinkedList,因为它具有动态大小。数组的大小在初始化后无法更改,并且您的设置为1。那会引起问题
添加:不需要调用
ProductMenu.main(空)//返回main
,因为您的addProduct
函数是在main方法中调用的,执行函数后,程序将继续在main函数中运行 解决您的问题:我会使用ArrayList或LinkedList,因为它具有动态大小。数组的大小在初始化后无法更改,并且您的设置为1。那会引起问题
添加:不需要调用
ProductMenu.main(空)//返回main
,因为您的addProduct
函数是在main方法中调用的,执行函数后,程序将继续在main函数中运行 因为您只需要使用数组,然后创建一个函数add(),该函数将首先检查数组的大小,如果有剩余空间,则添加元素,否则创建两倍大小的新数组,复制所有以前的元素并在末尾添加新的元素。
另外,由于大小是静态变量,所以不必传递给方法。您的方法也是静态的,并且方法和变量都在同一个类中,所以您可以直接在方法中使用变量。因为您只需要使用数组,然后创建一个函数add(),该函数将首先检查数组的大小,如果还有空间,则添加元素,否则创建一个新的双大小数组,复制所有以前的图元,并在末尾添加新图元。
另外,由于大小是静态变量,所以不必传递给方法。您的方法也是静态的,并且方法和变量都在同一个类中,所以您可以直接在方法中使用变量。感谢回复的可能重复,我知道数组索引从0开始。在我的代码中,numorary表示该数组的数组索引数,默认值为1,索引为0。在我的addProduct()函数中,在我将产品添加到数组中之后,当我添加另一个新的数组时,numOfArrayUse++将变成2,但我弄错了,这不是增加numOfArrayUse
java.util.ArrayList
,而是使用Array
动态大小。数组真的不能用代码动态更改大小吗?数组一旦创建就不能更改大小。可能是重复的我知道数组索引是从0开始的。在我的代码中,numorary表示该数组的数组索引数,默认值为1,索引为0。在我的addProduct()函数中,在我将产品添加到数组中之后,当我添加另一个新的数组时,numOfArrayUse++将变成2,但我弄错了,这不是增加numOfArrayUsejava.util.ArrayList
,而是使用Array
动态大小。数组真的不能用代码动态更改大小吗?数组一旦创建就不能更改大小。感谢回复,但我仍然无法更改大小要使用数组以及如何解决此问题?您需要创建一个新数组,即长度=product.length+1的new prodArr,创建一个for循环,将product[]的所有内容添加到该数组中,并将新产品添加到prodArr[prodArr.length-1]。然后使产品=产品。这需要在每次添加新产品时完成。我想说那太过分了,太过分了。。这非常麻烦,因此最好使用java.util.Arraylist。毕竟,为什么要重新发明轮子呢?:)感谢您的回复,但我仍然想使用数组以及如何解决此问题?您需要创建一个新数组,比如长度为product.length+1的new prodArr,创建一个for循环,并将product[]的所有内容添加到该数组中,然后将新产品添加到prodArr[prodArr.length-1]。然后使产品=产品。这需要在每次添加新产品时完成。我想说那太过分了,太过分了。。这非常麻烦,因此最好使用java.util.Arraylist。毕竟,为什么要重新发明轮子呢?:)谢谢你的回复。但是如果我不调用ProductMenu.main(null),它没有在主功能中继续,只是输出过程完成并完成。数组不能使用代码进行动态更改?数组具有固定大小,因此如果您希望产品列表中的产品数量达到最大值,请将数组大小设置为10:static product[]products=新产品[10]代码>但如果添加超过10个元素,程序将崩溃。如果不想限制元素,就必须使用某种列表,如java.util.ArrayList
在addProduct函数中调用main函数是一种不好的做法,因为它会导致递归。添加产品后程序结束的原因是while循环条件。将其替换为:while(menuOption==1 | | menuOption==2 | | menuOption==3 | | menuOption==4)代码>但如果我替换为while(menuOption==1 | | menuOption==2 | | menuOption==3 | | menuOption==4);当我输入另一个num(如9)时,它不会重新启动到主函数,而只是处理finisheds。您想一直运行吗?然后尝试以下操作:while(menuOption!=-1);这将继续循环,直到键入-1退出循环