ユーザーに7つの製品名を入力するように求めるプログラムを書いています。
私がやろうとしているのは、重複がある場合は、その方法を繰り返すことです。
while ループを使用しましたが、スタックしました。
最初にa、b、c、d、e、f、gを入力すると、メソッドが終了して次のメソッドに進みます。
しかし、a、a、b、c、d、e、fと入力すると、プログラムは同じメソッドを繰り返し、a、b、c、d、e、f、gと入力しても無限ループに入ります。
ここに私のコードがあります。
主に……
purchasedList.setShopList();
purchaseList クラスで...
public void setShopList() {
Scanner keyboard = new Scanner(System.in);
// print out description.
System.out.println("\n- Only have one entry of any type in the item list.");
System.out.println("- The name of items cannot be longer than 16 characters.");
System.out.println("\nType seven products.");
boolean sameNames = true;
while (sameNames == true) {
for (int i=0; i<7; i++) {
String n = keyboard.nextLine();
name.add(n);
name.set(i,name.get(i).toUpperCase());
}
sameNames = checkName();
}
}
// accessor.
public ArrayList<String> getShopList () {
return name;
}
// check duplicate.
public boolean checkName() {
Set<String> uniqueName = new HashSet<String>();
boolean foundName = false;
for (int i=0; i<7; i++) {
if (!uniqueName.add(name.get(i))) { // check duplicate
foundName = true;
}
}
if (foundName == true) {
System.out.println("※ There is a duplicate. Try it again.");
return true;
} else {
return false;
}
}
私のcheckName()メソッドは、私の最後のプロジェクトで機能したため、問題ありません。
私の最後のプロジェクトでは、このようにメインにwhileループを入れました
public static void main(String[] args) {
PurchasedList purchasedList = new PurchasedList();
.
.
.
boolean sameNames = true;
boolean tooLong = true;
while (sameNames == true || tooLong == true) {
System.out.println("\nType seven products.");
purchasedList.setShopList();
sameNames = purchasedList.checkName();
tooLong = purchasedList.checkLength();
}
しかし今回は、教授がすべての操作をメソッド内で実行するように求めているため、修正を試みます。
過去8時間で自分で解決しようとしましたが、解決できませんでした.
私を助けてください。
ありがとうございました。