2012-10-08 40 views
0

我完成了整个程序,它工作正常。但是,我在StringTokenizer遇到问题。我有一个名为Worker.java的类和一个名为TestWorker.java的测试类...StringTokenizer和Array Java

在测试类中,我计算并打印出总小时数,grossSalary等。 但我卡在1个位置,那就是我必须在数组中存储名称,ID和小时费率,然后使用StringTokenizer,我必须提示用户输入工人ID和小时费率。

当用户输入用户名工人和ID,程序输出将显示用户的工人每小时的速度...

,或者换句话说...

允许用户重复输入工人ID和小时数,直到用户输入并清空字符串。读取值并在适当的对象上调用addWeekly()方法(通过搜索数组以找到具有指定ID的对象)。如果输入不存在的ID,则显示相应的错误消息。

请参考下面我的译码,并修改为您的需求....

//Worker.java 

public class Worker { 
    public final double bonus=100; 
    protected String name; 
    protected String workerID; 
    protected double hourlyRate; 
    protected double hoursWorked; 
    protected double weekHour; 
    protected double tax; 
    protected double grossSalary; 
    protected double netSalary; 


    public Worker() { 
    } 

    public Worker(String name,String workerID,double hourlyRate){ 
     this.name = name; 
     this.workerID = workerID; 
     this.hourlyRate = hourlyRate; 
    } 

    public void addWeekly(double weekHour){ 

     hoursWorked = hoursWorked + weekHour; 

    } 

    public double gross() 
    { 
     grossSalary = (hoursWorked*hourlyRate); 
     if(hoursWorked>=150) 
     { 
      grossSalary = grossSalary +100; 
     } 
     return grossSalary; 
    } 

    public double taxAndNet() 
    { 
     tax = (grossSalary - 500) * 0.3; 
     netSalary = (grossSalary-tax); 
     return netSalary; 
    } 

    public String getName() 
    { 
     return name; 
    } 

    public String getWorkerID() 
    { 
     return workerID; 
    } 

    public double getHourly() 
    { 
     return hourlyRate; 
    } 

    public double getTotalHours() 
    { 
     return hoursWorked; 
    } 

    public double getGrossSalary() 
    { 
     return grossSalary; 
    } 

    public void addToGross(double amt) 
    { 
     grossSalary = grossSalary + amt; 
    } 

    public void displaySalary() 
    { 

     System.out.println("Name :" + name + "\nID :" + workerID +"\nHourly rate : "+ hourlyRate +"\nTotal Hours Worked " + hoursWorked +"\nGross Pay: "+getGrossSalary()+ "\nTax : "+tax +"\nNetpay :" +netSalary); 
    } 

} 


//TestWorker.java 

import java.util.StringTokenizer; 
import java.util.Scanner; 

public class TestWorker { 

    public static void main(String args[]) { 

     Worker e = new Worker("John Major","s123",15.0); 
     e.addWeekly(45); 
     e.addWeekly(40); 
     e.addWeekly(32); 
     e.addWeekly(38); 
     e.gross(); 
     e.taxAndNet(); 
     e.displaySalary(); 

     Worker[] worklist = new Worker[5]; 

     worklist[0] = new Worker("Richard Cooper","s1235",20.0); 
     worklist[1] = new Worker("John Major","s1236",18.0); 
     worklist[2] = new Worker("Mary Thatcher","s1237",15.0); 
     worklist[3] = new Worker("David Benjamin","s1238",16.0); 
     worklist[4] = new Worker("Jack Soo","s1239",25.0); 

     Scanner input = new Scanner(System.in); 
     String name; 

     do{ 
      System.out.print("Please enter your name and worker ID: "); 
      name = input.nextLine(); 

      StringTokenizer string = new StringTokenizer(name,"+"); 
      System.out.println("******|||||*******"); 
      while(string.hasMoreElements()){ 
       System.out.println(string.nextElement()); 
      } 
     } 
     while(name.isEmpty()==false); 

     String s = "Five+Three=Nine-One"; 
     String arr[]; 

      //declare it with 3 tokens as seen above: 
     StringTokenizer st = new StringTokenizer(s, "+=-"); 

     //the array size is the number of tokens in the String: 
     arr = new String[st.countTokens()]; 

      //when there are still more tokens, place it in the array: 
     int i = 0; 
      while(st.hasMoreTokens()){ 
     arr[i] = st.nextToken(); 
       i++; 
      } 

     //determine the word with the largest length: 
      int indexMax = 0; 
      for(i = 1; i < arr.length; i++){ 
      if(arr[i].length() > arr[indexMax].length()) 
      indexMax = i; 
      } 

     System.out.println("The largest element is in index: " 
       + indexMax); 

    } //main 
} //class 
+0

请在发布它之前写下[格式化您的代码](http://www.oracle.com/technetwork/java/javase/documentation/codeconvtoc-136057.html) – brimborium

+0

'我遇到了麻烦与StringTokenizer' - >但你说代码工作正常..这两个句子怎么回来? –

+0

@RohitJain By * working fine *我认为他的意思是*它编译* ... – brimborium

回答