繁体   English   中英

如何在方法中添加静态变量号?

[英]How can i add the static variable number in a method?

我创建一个ProductMenu类来执行添加,搜索,删除和更新产品任务,并且它仅使用数组。 我面临的问题是如何在方法中添加静态变量,因为在将乘积添加到数组后无法添加最大数量的数组。 希望能对您有所帮助,谢谢。

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。 数组列表由后台的数组支持,在处理数据时您不必担心arrayindexoutofbound异常

给您的问题:我将使用ArrayList或LinkedList,因为它具有动态大小。 初始化后无法更改数组的大小,而将数组的大小设置为1。这会引起问题。

另外:您不需要调用ProductMenu.main(null); //back to main ProductMenu.main(null); //back to main因为在main方法中调用了addProduct函数,执行addProduct函数后,程序将在main函数中继续。

因为您只需要使用Array,然后创建一个函数add(),该函数将首先检查数组的大小,如果还有空间,则添加元素,否则创建两倍大小的新数组,复制所有先前的元素并在末尾添加新的元素。 同样,由于size是静态变量,因此您不必传递给方法。 您的方法也是静态的,并且方法和变量都在同一类中,因此您可以直接在方法中使用变量。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM