0

プログラム全体が完了し、正常に動作しています。しかし、StringTokenizer に問題があります。Worker.java という名前のクラスと TestWorker.java という名前のテスト クラスがあります...

テスト クラスでは、総労働時間、総給与などを計算して出力しました。ユーザーにワーカー ID と時給を入力するように求める必要があります。

ユーザーがユーザーのワーカー名と ID を入力すると、プログラムの出力にワーカーの時給が表示されます...

または言い換えれば...

ユーザーが空の文字列を入力するまで、worker-ID と Hours を繰り返し入力できるようにします。値を読み取り、適切なオブジェクトでメソッド 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
4

1 に答える 1

0

Javaのバージョンを教えてください。jdk 1.4.2 以降、古い Stringtokenizer の代わりに String.split(...) を使用する必要があります。このチュートリアルをチェックしてくださいヒント: String.split(); に関する小さなチュートリアルです。

于 2012-10-08T15:45:13.470 に答える