我正在编写程序,要求用户输入七个产品名称。
我尝试做的是如果有重复,然后重复该方法。
我使用了while循环,但我卡住了。
如果我第一次输入 a,b,c,d,e,f,g,则方法结束并转到下一个方法。
但是如果我输入 a,a,b,c,d,e,f,程序会重复相同的方法,即使我输入 a,b,c,d,e,f,g,它也会进入无限循环。
这是我的代码。
主要……
purchasedList.setShopList();
在购买列表类...
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循环放在main中
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 小时内自己解决它,但我无法得到解决方案。
请帮我。
谢谢你。