簡體   English   中英

如何以不同的方法使用 arraylist 但方法在 class 內部

[英]How to use arraylist in different methods but the methods are inside of the class

我想使用 Arraylist 以不同的方法添加到另一個 Arraylist 就像訂購一樣,但錯誤總是找不到在不同方法中調用 Arraylist 的符號。

導入 java.util.*;

class 選擇菜單{

String prod;
double cost;

這是用於選擇實用程序:

public void selectMenu(){

    int utility;    
    Scanner in = new Scanner(System.in);

    System.out.printf("\n\n[1]Ordering\n[2]Add Item\n[3]Remove Item\n[4]Show Orders\n[5]Print Receipt");
    do{System.out.printf("\n\nChoose Utility:");
    utility = in.nextInt();
    }while(utility < 1 || utility > 5);

    switch(utility){
        case 1:
            System.out.println("\t\t\t------------------------HOTDOGGU HOUSE--------------------------");
            displayMenu();
            getOrder();
            selectMenu();
        break;
        case 2:
            \\adding Item
        break;
        case 3:
            \\Remove Item
        break;
        case 4:
            displayOrders();
        break;
        case 5:
            \\Printing Receipt
        break;
    }

}

這是用於顯示菜單:

public void displayMenu(){
        ArrayList<String> menu1 = new ArrayList<String>();
        String[] menu_name = new String[6];
        menu1.add("");
        menu1.add("Hotdog");
        menu1.add("Cheesedog");
        menu1.add("Corndog");
        menu1.add("Sausage");
        menu1.add("Chickendog");

        ArrayList<Double> menu2 = new ArrayList<Double>();
        Double[] menu_price = new Double[6];

        menu2.add(0.00);
        menu2.add(25.50);
        menu2.add(30.45);
        menu2.add(20.15);
        menu2.add(50.25);
        menu2.add(35.75);

        System.out.println("\t\t\tOrder No."+"\t\tProduct"+"\t\t\t    Price");

    for (int i = 1; 1 < menu1.size() && i < menu2.size(); i++){
        System.out.printf("\n\t\t\t  ["+i+"]"+"\t\t  %s\t\t\t"+"  %2.2f PHP",menu1.get(i), menu2.get(i));
    }
}

這是用於顯示訂單:

public void displayOrders(){

    ArrayList<String> product = new ArrayList<String>();
    for (int i = 1; i < product.size(); i++){
        product.add(prod);
    }

    ArrayList<Double> price = new ArrayList<Double>();
    for (int i = 1; i < price.size(); i++) {
        price.add(cost);
    }

    System.out.println("\t\t\tOrder No."+"\t\tProduct"+"\t\t\t    Price");

    for (int i = 1; i < product.size() && i < price.size(); i++){
        System.out.printf("\n\t\t\t  ["+i+"]"+"\t\t  %s\t\t\t"+"  %2.2f PHP",product.get(i), price.get(i));
     }
}

這是為了獲得訂單:

public void getOrder(){
    int order;

    Scanner g1 = new Scanner(System.in);

    do{System.out.printf("\nWhat is your Order?:");
    order = g1.nextInt();
    }while(order < 1 || order > 6);

    switch(order){
        case 1:
            prod = menu_name.get(order); \\Error cannot find symbol
            cost = menu_price.get(order); \\Error cannot find symbol
        break;
    }
}

}

你有兩個選擇:

  1. 使其成為字段變量,或
  2. 將其作為參數傳遞給使用 ArrayList 的每個方法。

在這兩者中,我絕對建議您使用選項 1,因為它更容易。 您所要做的就是:

class SelectMenu {
    String prod;
    double cost; //these two field variables that you already have
    ArrayList<String> menu1; //declare it as a field variable.

/*
    All of your other methods here
*/
}

當你這樣做時,你不需要擔心其他任何事情,但是當你在方法selectMenu()中初始化它(即給它一個值)時,請確保你這樣做: menu1 = new ArrayList<String>(); ,而不是這個: ArrayList<String> menu1 = new ArrayList<String>(); .

因為您的程序中已經有兩個字段變量,所以我懷疑您是否需要幫助來理解它們是如何工作的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM