Проблема в этом разделе:
while (error==true)
{
if (Character.isLetter(input.charAt(0)))
{
System.out.println("\n**ERROR06** - Quantity on hand must be between 0 and 500");
error=true;
System.out.println(qoh);
System.out.println(input);
}
else
{
qoh = Integer.parseInt(input);
error=false;
}
}
Как только у вас есть буква в первой позиции, этот цикл никогда не может закончиться. Он проверяет, находится ли буква в первой позиции (она есть), печатает ее и повторяет. Попробуйте изменить на:
while (error==true)
{
if (Character.isLetter(input.charAt(0)))
{
System.out.println("\n**ERROR06** - Quantity on hand must be between 0 and 500");
error=false;
...
Также пара других вещей:
while (error == true)
можно сократить до while(error)
.
Кроме того, Integer.parseInt
выдаст NumberFormatException
, если ввод не является целым числом - вам нужно поймать и обработать это.
Кроме того, зачем вам вообще нужен второй цикл? Кажется, что это только для проверки ввода - если это так, вы можете переместить эту логику в первый цикл и исключить второй. Используйте циклы только для вещей, которые должны повторяться (например, пользователь вводит входные данные). Нет необходимости повторно проверять один и тот же вход.