基本Java问题

Mat*_*say -5 java loops public while-loop java.util.scanner

我编译没有错误,但是我可以完成第一个循环没有问题.然而,第二次绕过它将提示分区名称但是员工数量的提示确实如此.所以我最终看到输入部门名称:输入员工人数:

不知道为什么会发生这种情况,但是在看的时候我看不到任何不合适的地方.

如果您看到我出错的地方,您可以指向行号或代码串.

谢谢.

import java.util.Scanner;

public class PayRoll {

    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);

        String name;
        int employees;
        double salary;        

        while(true) {
            System.out.print("Enter Division Name: ");
            name = input.nextLine();

            if(name.equalsIgnoreCase("stop")) {
                break;
            }else {
                System.out.print("Enter Number of Employees: ");
                employees = input.nextInt();

                while(employees <= 0) {
                    System.out.print("Number of Employees Must be Greater than 0, Please Re-enter: ");
                    employees = input.nextInt();                
                }

                System.out.print("Enter Average Salary: ");
                salary = input.nextDouble();

                 while(salary <= 0) {
                    System.out.print("Average Salary Must be Greater than 0, Please Re-enter: ");
                    salary = input.nextDouble();
                }

                Division d = new Division(name,employees,salary);
                System.out.println();
                System.out.println("Division " + d.getName());
                System.out.println("Has " + d.getEmployees() + " Employees.");
                System.out.printf("Averaging $%.2f\n",d.getSalary(),"per Employee");
                System.out.printf("Making the Division total: $%.2f\n", d.getTotal());
                System.out.println();
            }                    
        }
    }
}

class Division {
    private String name;  
    private int employees;
    private double salary;              

    public Division(String name, int employees, double salary) {
        this.name = name;
        this.employees = employees;
        this.salary = salary;
    }

    public double getTotal() {
       return employees*salary;
   }

   public String getName() {
       return name;
   }

   public void setName(String name) {
       this.name = name;
   }

   public int getEmployees() {
      return employees;
   }

   public void setEmployees(int employees) {
       this.employees = employees;
   }

   public double getSalary() {
       return salary;
   }

   public void setSalary(double salary) {
       this.salary = salary;
   }
}
Run Code Online (Sandbox Code Playgroud)

ati*_*mpi 5

while(true) {
    input = new Scanner(System.in);
 }
Run Code Online (Sandbox Code Playgroud)

在while循环中实例化您的Scanner实例input.