インスタンスの作成に疑問があります。
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