2012-02-12 2 views
0

У меня возникли проблемы со следующей частью моего кода. Когда вводится «nn», я получаю недействительный код. , когда введен правильный код, я получаю неверный код, однако это происходит только один раз. Программа, похоже, не работает должным образом. Пожалуйста помогите.Подтвердить ввод пользователя от ArrayList

System.out.println("ENTER CODE (nn to Stop) : "); 
    ArrayList<Product> list = new ArrayList<Product>(); 
    . 
    . 
    . 
    . 


    ArrayList<Code> codeList = new ArrayList<Code>(); 


    for (Product product : list) { 
     System.out.print("CODE : "); 
     String pcode = scan.next(); 
     if (pcode.equalsIgnoreCase("nn")) { 
      break; 
     } 

     if (!(code.equalsIgnoreCase(product.getCode()))) { 
      System.out.println("Invalid code, please enter valid code."); 
      System.out.print("CODE : "); 
      pcode = scan.next(); 

     } 

     System.out.print("QUANTITY : "); 
     int quan = scan.nextInt(); 
     while (quan > 20) { 
      System.out.println("Purchase of more than 20 items are not allowed, please enter lower amount."); 
      System.out.print("QUANTITY : "); 
      quan = scan.nextInt(); 
     } 
     codeList.add(new Code(pcode, quan)); 
    } 

ответ

1

Вы хотите continue вместо break.

Кроме того, вы должны только позвонить code = scan.next() один раз внутри цикла; в противном случае вы пропустите некоторые элементы.

String code = scan.next(); 
boolean match = false; 
for (Product product : list) { 
    if (code.equalsIgnoreCase(product.getCode())) { 
     match = true; 
     break; 
    } 
} 
// now only if match is false do you have an invalid product code. 

Update:

Я до сих пор не могу получить эту работу. То, что я пытаюсь сделать, это проверить вход пользователя , чтобы убедиться, что код продукта существует, если не запрашивается, что код продукта недействителен и запрашивает правильный код. Я также нуждаюсь в , чтобы иметь условие для остановки порядка, когда вводится «nn». Я пробовал в то время как циклы, циклы do-while и т. Д. Я, похоже, не понимаю. Пожалуйста, assist. Моя проблема заключается в написании кода для нескольких условий. Когда работает правильно, другой нет.

while (true) { 
    final String code = scan.next(); 
    if (isExitCode(code)) { 
     break; 
    } 
    if (!isValidCode(code)) { 
     System.out.println("Invalid code, please enter valid code."); 
     continue; 
    } 
    int quantity = -1; 
    while (true) { 
     quantity = scan.nextInt(); 
     if (!isValidQuantity(quantity)) { 
      System.out.println("bad quantity"); 
      continue; 
     } 
     break; 
    } 
    // if you've got here, you have a valid code and a valid 
    // quantity; deal with it as you see fit. 
} 

Теперь вам просто нужно написать методы isExitCode(), isValidCode(), и isValidQuantity().

+0

Я попытался продолжить, однако мне нужно полностью отключиться от цикла, когда вводится «nn». Я удалил 'code = scan.next() изнутри, если блок, но такие же результаты. – xiphias

+0

Я noob, я стараюсь изо всех сил ... – xiphias

+0

Итак, когда вы перебираете продукты, текущий продукт, на котором вы находитесь, является единственным, который будет принят; вы сравниваете введенный код с кодом текущего продукта и считаете его недействительным в противном случае. Это то, что вы хотите? –

Смежные вопросы