Как разбить циклы и назначить параметры объекту массива

#java #arrays #loops #while-loop

#java #массивы #циклы #while-цикл

Вопрос:

  1. Цикл должен прекратиться, если я введу другие числа, но он все еще зацикливается.
  2. При установке информации для объекта 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.