0
なぜ私のaddRecord()メソッドがループしているのか分かりません。具体的には、メソッドの「if/else」の最初のelseで「Enter Sales ID >>」でループします。私は、コードの最後にprogramMenu()メソッドを呼び出そうとしましたが、コンパイラは両方を実行しようとし続けます。このメソッドは、switch caseステートメントで "a"を受け取ったときにのみ実行する必要がありますが、 "a"と "c"の両方が入力されたときに実行され、 "Enter Sales ID >>" 。私のメソッドがループなしでループしているのはなぜですか?
私の方法は、次のようになります。
public static int addRecord(Salesperson[]salesPeopleArray, int
numOfSalesPpl)
{
String name=null;
String idNum;
double salesAmt = 0;
String response;
numOfSalesPpl = 0;
final int MAX_LIMIT=20;
final int ID_NUM_LIMIT = 8;
if(numOfSalesPpl == MAX_LIMIT)
{
System.out.print("Database has reached capacity.");
System.out.print(" Please delete a record before ");
System.out.println("adding to the database.");
}
else
System.out.print("Enter Sales ID:>> ");
idNum = userInput.nextLine();
if(idNum.length() != ID_NUM_LIMIT)
{
System.out.println(">>>>>Sales ID must be 8 digits<<<<<<");
programMenu();
}
else
{
System.out.print("Please enter name: >> ");
name = userInput.nextLine();
System.out.print("Sales amount : >> ");
salesAmt = userInput.nextDouble();
salesPeopleArray[numOfSalesPpl] = new Salesperson(name,
idNum,salesAmt);
++numOfSalesPpl;
userInput.nextLine();
System.out.print("Do you want to display database> Y/N >>");
response = userInput.nextLine();
if(response.equals("y"))
displayDatabase(salesPeopleArray, numOfSalesPpl);
}
return numOfSalesPpl;
}
私のスイッチケースは次のようになります。
String selection = programMenu();
boolean loop = true;
do
{
switch(selection)
{
case "A":
case "a":
addRecord(salesPeopleArray, numOfSalesPpl);
break;
case "C":
case "c":
changeRecord(numOfSalesPpl, salesPeopleArray);
break;
case "Q":
case "q":
System.out.print("You Are Leaving Database");
System.out.print(" ");
loop = false;
break;
}
}
while(loop);
}
マイprogramMenu()メソッド次のようになります。
public static String programMenu()
{
String selection;
do
{
System.out.println("====================================");
System.out.println("(A)dd a Record");
System.out.println("(C)hange a Record");
System.out.println("(Q)uit Database");
System.out.print("Enter selection: >> ");
selection = userInput.nextLine();
if(!selection.equalsIgnoreCase("a") &&
!selection.equalsIgnoreCase("c") && !selection.equalsIgnoreCase("q"))
System.out.println(">>>>Invalid Selection<<<<");
System.out.println("====================================");
}
while(!selection.equalsIgnoreCase("a") &&
!selection.equalsIgnoreCase("c") && !selection.equalsIgnoreCase("q"));
return selection;
}
}