#java #arrays #loops #while-loop
#java #массивы #циклы #while-цикл
Вопрос:
- Цикл должен прекратиться, если я введу другие числа, но он все еще зацикливается.
- При установке информации для объекта employee возникает ошибка. Как на самом деле предполагается писать?
System.out.println("Enter '1' to add employee's information:");
int add = s.nextInt();
while(add==1){
for (int i=0; i<=employees.length; i ){
System.out.println("Enter the name :");
String newName = s.next();
System.out.println("Enter the IC number :");
String newIC = s.next();
System.out.println("Enter the department :");
String newdept = s.next();
employees[i] = new Employee();
employees[i].setEmployee(newName, newIC, newdept);
System.out.println("Enter '1' to add employee's information:");
add = s.nextInt();
}
}
в результате цикл может остановиться, и мы можем установить информацию для объекта.
Ответ №1:
Ключом является следующая конструкция:
while(add==1){
for (int i=0; i<=employees.length; i ){
// Code
add = s.nextInt();
}
}
Посмотрите, что вы указали здесь:
- Проверьте, равно ли add 1
- Пройдите по всем элементам employee
-
- Сделайте что-нибудь
-
- Установите добавить к другому значению
- Как только все сотрудники будут обработаны, начните сначала
Ваша добавляемая переменная не играет никакой роли во время вашего for (i=0...)
цикла, она всегда выполняется полностью.
Возможно, вы захотите переключить оператор while
and for
или просто использовать что-то вроде этого:
for (int i = 0; i < employees.length; i ) {
if (add != 1) break;
// ...
add = s.nextInt()
}
В качестве примечания, вам нужно проверить i < employees.length
, чтобы избежать ArrayIndexOutOfBoundsException
. В конце концов, длина — это первый недопустимый индекс.
Добро пожаловать в StackOverflow и продолжайте взламывать.
Ответ №2:
Вы также можете использовать клаузулу break, но не рекомендуется, например, так:
for (int i = 0; i < employees.length; i ) {
// your code
if (add != 1){
break;
}
add = s.nextInt()
}
Лучше, если вы выйдете из цикла, используя хорошее условие в вашем while.