왜 내 addRecord() 메서드가 반복되는지 알 수 없습니다. 구체적으로 말하자면, 메소드의 my if/else의 첫 번째 else에서 "Enter Sales ID >>"에서만 반복됩니다. 코드의 끝에서 programMenu() 메서드를 호출하려고 시도했지만 컴파일러는이 두 가지를 모두 실행하려고 계속 시도합니다. 이 방법은 switch case 문에서 "a"가 수신 될 때만 실행되어야하지만 "a"와 "c"가 모두 입력 될 때 실행되고 "Enter Sales ID >>"에서 동일한 else 문으로 반복됩니다 .내 메서드가 루프없이 반복되는 이유는 무엇입니까?
내 방법은 다음과 같습니다
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;
}
내 스위치 케이스는 다음과 같습니다
여기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;
}
}