2014-04-26 119 views
0

我目前正在尝试编程一个基于数组的程序。我们必须创建一个员工类,然后是测试员主类,它包含五个用户输入员工姓名,薪水和绩效评分。绩效评级用于确定提供的筹资金额。我已经基本完成了,但是当我运行该程序时,即使Java虚拟机正在运行,也没有任何反应。我一直在寻找错误,任何人都可以指出我做错了什么?与阵列发生故障

Employee类

public class Employee 
{ 
    private String employeeName; 
    private int salary; 
    private int performanceRating; 

    public Employee() 
    { 
    employeeName = ""; 
    salary = 0; 
    performanceRating = 0; 
    } 
    public String getEmployeeName() 
    { 
     return employeeName; 
    } 
    public int getSalary() 
    { 
     return salary; 
    } 
    public int getPerformanceRating() 
    { 
     return performanceRating; 
    } 
} 

这是测试器主类,其中的错误出现在什么地方

import java.util.Scanner; 
public class Tester 
{ 
    public static void main(String[] args) 
    { 
     Employee[] work = new Employee[5]; 
     Scanner scanString = new Scanner(System.in); 
     Scanner scanInt = new Scanner(System.in); 


     String employeeName = ""; 
     double salary = 0; 
     double performanceRating = 0; 

     String choice = scanString.nextLine(); 
     while(choice.equals("yes")) 
     { 
      for(int i = 0; i < 5 ;i++) 
      { 
       System.out.println("What is the employee's name?"); 
       employeeName = scanString.nextLine(); 

       System.out.println("Enter Employee's salary"); 
       salary = scanInt.nextInt(); 

       System.out.println("Performance? 1 = excellent, 2 = good, 3 = poor"); 
       performanceRating = scanInt.nextInt(); 

       work[i] = new Employee();  


      } 
      for(int j = 0; j < 5; j ++) 
       if(work[j].getPerformanceRating() == 1) 
       { 
        salary = salary * 0.06; 
        System.out.println("Employee " + employeeName + " salary raised to " + salary); 
      } 
      else if(performanceRating == 2) 
      { 
       salary = salary * 0.04; 
       System.out.println("Employee " + employeeName + " salary raised to " + salary); 
       } 
       else if(performanceRating == 3) 
       { 
        salary = salary * 0.015; 
        System.out.println("Employee " + employeeName + " salary raised to " + salary); 
       } 
       else if(performanceRating < 5) 
       { 
        salary = salary; 
        System.out.println("Rating is off scale. No raise for emplyee " + employeeName); 
       } 
       System.out.println("Enter more employees? type 'yes' if you want to go again"); 
       choice = scanString.nextLine(); 
      } 
     System.out.println("Done"); 
    } 

    } 
+0

你从来没有设置创建'Employee'的字段,你将gettergetRating'和本地变量'performanceRating'混合在一起,你并没有真的更新他们的薪水('getSalary'不会改变),您仍要求输入更多员工,同时您仍在打印更新的薪资...... –

回答

0

该程序从System.in读取。如果你不输入任何东西,什么都不会发生。

不知道为什么你有2个扫描仪,而不是一个。

0

你有while(choice.equals("yes"))除了你永远不会提示用户做出选择。该程序确实做了一些工作(其中有些可能并不全部正常工作),但是您必须提供程序输入。你可以做的是在行String choice = scanString.nextLine();之前询问用户一个问题。

作为一个附注,您可以使用switch来代替ifelse if,它可能会更容易阅读和理解。