Javaに関する様々な情報をご紹介します。

Javaに関する様々な情報をご紹介します。
評価

0

ゲッターとセッター

ifをつかって
時給と40時間の基本給、残業手当をだすプログラミングをつくろうとしてます。
ちょっと長いプログラミングなのですが、以下に書きます。
−−−−−−−−−−−−−−−−−−−−−−−−−
import javax.swing.*;
public class Pay
{
 public static void main(String[] args)
 {
    String skillString;
    double payment1=17.00,
      payment2=20.00,payment3=22.00;
    double hourlyRate;
    int skill;
    skillString = JOptionPane.showInputDialog(null,"Enter your skill level/n ! ENTER 1-3");
    skill=Integer.parseInt(skillString);
            
    if(skill == 1)
    {    
    hourlyRate=payment1;
     JOptionPane.showMessageDialog(null,"your hourly pay rate is $" + hourlyRate);
                
    }
    else 
     if(skill == 2)
    {    
     hourlyRate=payment2;
    JOptionPane.showMessageDialog(null,"your hourly pay rate is $" + hourlyRate);
                    
    }
    else
     if(skill == 3)
    {
    hourlyRate=payment3;
    JOptionPane.showMessageDialog(null,"your      hourly pay rate is $" + hourlyRate);
    }
    String hourString;
    double hour;
        
    hourString=JOptionPane.showInputDialog(null,"How many hours did you work this week?");
    hour=Double.parseDouble(hourString);
    
 !!double regularPay=hour*payment;!!
    double overtime = hour-40;
    double overtimePay; 
    double grossPay;
        
    if(overtime <= 40 && overtime >= 0)
    {
     overtimePay=0;
     grossPay=regularPay;
     JOptionPane.showMessageDialog(null,"You worked for " + hour +" hours \nYour regular pay is $" + regularPay + "\nYour overtime pay is $" + overtimePay + "Your grossPay is $" + grossPay );
    }
    else 
     if(overtime > 40)
    {
                    overtimePay=regularPay*1.5*overtime;
    grossPay=regularPay+overtimePay;
    JOptionPane.showMessageDialog(null,"You worked for " + hour +" hours \nYour regular pay is $" + regularPay + "\nYour overtime pay is $" + overtimePay + "Your grossPay is $" + grossPay );
}
System.exit(0);
}
}
−−−−−−−−−−−−−−−−−−−−−−−−
見にくて申し訳ございません。
ここでコンパイルしたところ、「!!」でくくった
double regularPay=hour*payment
のところでエラーが出てしまいます。

そこでゲッターとセッターを使ってプログラミングをしようと試して。上記のエラーのところを。

Pay payment = new Pay();
payment.setRate(hourlyRate);
double regularPay=hour*payment.getRate(hourlyRate);

に変えてみました。
そうすると、ゲッターとセッターのところにエラーが出てしまいました。
そもそもこのプログラミングにゲッターとセッターが必要なんでしょうか?
もし必要ならば、どお言う風に書けばいいのでしょうか?正直まだまだゲッターとセッターの使い方がいまいち分かっていません。
長い文章で申し訳ないのですが、アドバイスの方よろしくお願いいたします。

5

回答

4634

閲覧

5件の回答

評価

0

>!!double regularPay=hour*payment;!!
paymentって何でしょう?

http://www.javaroad.jp/faq/faq_error1.htm#q5
こちらが参考になるかもしれません。

http://www.atmarkit.co.jp/fwin2k/operation/command002/command3.html
コマンドプロンプトの表示内容をコピーする方法です。
エラー内容のコピーを取得したい時などにお使い下さい。

>そもそもこのプログラミングにゲッターとセッターが必要なんでしょうか?
いらないように思います。
ゲッターやセッターは基本的に
他のクラスに情報を渡したり、
他のクラスから情報を受け取ったり
する時に使います。
カプセル化とからんでくるところですね。

評価

0

 サクッと調べてみたところ、どうやら、
double regularPay=hour*payment;
は、
double regularPay=hour*hourlyRate;
の間違いのようですね。
で、hourlyRateは初期化しておかないとエラーになるので、
double hourlyRate;

double hourlyRate=0;
などとしておくといいかもです。しかし、このプログラムは取消を押すとエラーになるので、そのあたりを修正する必要があると思います。

評価

0

 あと、思ったんですが、最後のifの判定式とovertimePayの計算が間違ってないですか?(汗)

if(overtime <= 40 && overtime >= 0)

if (overtime <= 0)

else if(overtime > 40)

else if (overtime > 0)

overtimePay=regularPay*1.5*overtime;

overtimePay=hourlyRate*1.5*overtime;
が正しいような気がします。

ちなみに、このプログラムにゲッターとセッターが必要なのかは僕もよくわかりません(汗)。

評価

0

payment1, payment2 はあるけど
payment は無い件について、?

評価

0

アドバイスありがとうございました。
とりあえず、ゲッターやセッターを使わず、プログラミングを完成できました。

ただゲッターセッターに関してまだよく分かってないのでまた質問することがあれば掲示板に投稿します。

質問から6ヶ月以上経過しているので、回答を書き込むことはできません。