달러 금액을 읽고 그 값을 다시 인쇄하는 장바구니를 디자인하려고합니다. 그러나 My while 루프는 종료되지 않고 arraylist는 잘못된 값을 저장합니다.ArrayList 용 Java While 루프가 종료되지 않습니다.
을하지만 내 출력 :
/**
* This method is the shopping cart
*/
public static void shoppingCart()
{
// create scanner objects
Scanner textReader = new Scanner(System.in);
Scanner numberReader = new Scanner(System.in);
// declare variables
int counter = 0;
// create arraylist object
ArrayList<Double> cartItems = new ArrayList<Double>();
// create decimal format object
DecimalFormat dollarformatter = new DecimalFormat("$#0.00");
// print out the first prompt
System.out.print("Would you like to input item/s - y/n: ");
String response = textReader.nextLine();
System.out.println();
// create while loop to restrict responses to single characters
while ((!response.equalsIgnoreCase("y")) && (!response.equalsIgnoreCase("n")))
{
System.out.print("Sorry - we need a y/n: ");
response = textReader.nextLine();
System.out.println();
}
// create while loop for positive response
while ((response.equalsIgnoreCase("y")))
{
System.out.print("Please enter an item price, or -1 to exit: $");
double values = numberReader.nextDouble();
cartItems.add(values);
if ((values > (-1)))
{
System.out.print("Please enter another item price, or -1 to exit: $");
values = numberReader.nextDouble();
cartItems.add(values);
}
else if ((values <= (-1)))
{
System.out.println();
System.out.println("********** Here are your items **********");
System.out.println();
for (counter = 0; counter < cartItems.size(); counter++)
{
System.out.println("Item #" + (counter + 1) + ": " + cartItems.get(counter));
}
}
}
System.out.println();
System.out.println("********** Thank you for using the shopping cart **********");
}
결과는 다음과 같아야합니다
- 루프가 종료하고 다시 이동하지 않지만 첫 번째 프롬프트에 "상품 가격을 입력하십시오. 종료하려면 -1을 입력하십시오 :"
- 프로그램은 arraylist의 일부로 "-1"을 계속 계산합니다. "-1"값은 "no"로 작동하고 arrayList에 더 많은 요소를 추가하는 것을 끝내지 만 내 코드에서는 arrayList에 흡수됩니다. 나는 "-1"을 문자열로 바꾸어 "무시"하도록 프로그램을 시도했지만 작동하지 않습니다.
- 프로그램이 최종 항목을 나열한 후 (사용자 출력에서 # 3) 사용자가 항목을 삭제할지 묻는 메시지가 표시됩니다. 나는 while 회 돌이가 종료를 거부하는 이유와 "-1"이 내 arraylist에 계속 포함되는 이유에 관해서는 꽤 난처한 것으로서 나는 여기까지 오지 않았다. 내가 운이없는 지금 하루 동안 이것에 대해 궁리 해 왔기 때문에 이것에 대한 어떤 도움도 크게 감사합니다.
업데이트 된 코드; 루프 종료 문제가 해결 된 것처럼 보이지만 "-1"이 종료를 트리거하지 않고 여전히 arrayList에 추가되고 있습니다.
while ((response.equalsIgnoreCase("y"))) {
System.out.print("Please enter an item price, or -1 to exit: $");
double values = numberReader.nextDouble();
cartItems.add(values);
while ((values != (-1))) {
System.out.print("Please enter another item price, or -1 to exit: $");
values = numberReader.nextDouble();
cartItems.add(values);
}
System.out.println();
System.out.println("********** Here are your items **********");
System.out.println();
for (counter = 0; counter < cartItems.size(); counter++) {
System.out.println("Item #" + (counter + 1) + ": " + cartItems.get(counter));
}
break;
}
else if 문은 여전히 while 루프 안에 있으므로 프롬프트가 다시 인쇄됩니다. 어쩌면 휴식 진술서를 넣는 것을 고려해야합니까? 또한 if 및 else 문 앞에 값을 장바구니에 추가하므로 여전히 -1이 추가됩니다. – Meepo
"-1"을 "종료"로 읽지 않는 이유를 설명 할 수 있습니까? "-1"을 입력해도 코드는 계속 실행됩니다. – iMagicMango
while 루프는 조건이 true 일 때 반복을 계속합니다.if else 문은 입력되지만 while 루프의 맨 위로 돌아갑니다. – Meepo