Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

インスタンスの作成に疑問があります。

Q&A

Closed

解決したいこと

お手本のコードを見ていたら、腑に落ちないことがあります。
GroceryList というクラスがあり、Main クラスでこの GroceryListのインスタンスを作っています。 
それは、groceryListという名前のインスタンスなのですが、試しに、gListという名前に変更してみたら、コードが動かなくなります。
これは、どういうことなのでしょうか?
私のコードの理解のしかたがおかしいのでしょうか?

該当するソースコード

import java.util.ArrayList;

public class GroceryList {

    private ArrayList<String> groceryList = new ArrayList<String>();
    //↑フィールド?


    public void addGroceryItem(String item) {
        groceryList.add(item);
    }

    public void printGroceryList() {
        System.out.println("You have " + groceryList.size() + " items in your grocery list");
        for(int i=0; i< groceryList.size(); i++) {
            System.out.println((i+1) + ". " + groceryList.get(i));
        }
    }

    public void modifyGroceryItem(int position, String newItem) {
        groceryList.set(position, newItem);
        System.out.println("Grocery item " + (position+1) + " has been modified.");
    }

    public void removeGroceryItem(int position) {
        String theItem = groceryList.get(position);
        groceryList.remove(position);
    }

    public String findItem(String searchItem) {
        //          boolean exists = groceryList.contains(searchItem);

        int position = groceryList.indexOf(searchItem);
        if(position >=0) {
            return groceryList.get(position);
        }

        return null;
    }
}


該当するソースコード Main クラス

import java.util.Scanner;

public class Main {
    private static Scanner scanner = new Scanner(System.in);
    private static GroceryList groceryList = new GroceryList();//5
    //          private static GroceryList gList = new GroceryList(); に変えてみた


    public static void main(String[] args) {
        boolean quit = false;
        int choice = 0;
        printInstructions();
        while(!quit) {
            System.out.println("Enter your choice: " );
            choice = scanner.nextInt();
            scanner.nextLine();

            switch(choice) {
            case 0:
                printInstructions();
                break;
            case 1:
                groceryList.printGroceryList();//23
                //     gList.printGroceryList(); に変えてみた。
                break;
            case 2:
                addItem();
                break;
            case 3:
                modifyItem();
                break;
            case 4:
                removeItem();
                break;
            case 5:
                searchForItem();
                break;
            case 6:
                quit = true;
                break;
            }
        }
    }

    public static void printInstructions() {
        System.out.println("\nPress ");
        System.out.println("\t 0 - To print choice options.");
        System.out.println("\t 1 - To print the list of grocery items.");
        System.out.println("\t 2 - To add an item to the list.");
        System.out.println("\t 3 - To modify an item in the list.");
        System.out.println("\t 4 - To remove an item from the list.");
        System.out.println("\t 5 - To search for an item in the list.");
        System.out.println("\t 6 - To quit the application.");
    }

    public static void addItem() {
        System.out.print("Please enter the grocery item: ");
        groceryList.addGroceryItem(scanner.nextLine());
    }

    public static void modifyItem() {
        System.out.print("Enter item number: ");
        int itemNo = scanner.nextInt();
        scanner.nextLine();
        System.out.print("Enter replacement item: ");
        String newItem = scanner.nextLine();
        groceryList.modifyGroceryItem(itemNo-1, newItem);
    }

    public static void removeItem() {
        System.out.print("Enter item number: ");
        int itemNo = scanner.nextInt();
        scanner.nextLine();
        groceryList.removeGroceryItem(itemNo-1);

    }

    public static void searchForItem() {
        System.out.print("Item to search for: ");
        String searchItem = scanner.nextLine();
        if(groceryList.findItem(searchItem) != null) {
            System.out.println("Found " + searchItem + " in  our grocery list");
        } else {
            System.out.println(searchItem + " is not in the shopping list");
        }
    }

}

自分で試したこと

ここに問題・エラーに対して試したことを記載してください。

コードを理解するために、試しにインスタンスの名前を変えてみました。

0

1Answer

@retaさんがおっしゃっているように
まずはエラーを読んでみてはいかがでしょうか。

コード上で現状分かることは
Mainクラスのクラスメソッドに何か違和感を感じませんか?

エラーには「どこで、どんな事が起こった」かが
しっかり書かれているはずなので、解決の糸口を探してみましょう。

0Like

Comments

  1. @Choco_Late

    Questioner

    そうしようと思います。ありがとうございます。

Your answer might help someone💌