2012-10-08 122 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

回答