3

だから、私はここで非常に奇妙な問題を抱えています。user.salaryの値に1.1を掛けると、なんらかの理由で0になります。元のuser.salary変数は問題ありませんが、System.out.printlnで想定されているものであることを確認しました。

import javax.swing.JOptionPane;


class Employee{
    String firstname;
    String lastname;
    double salary;
    Employee (String firstname, String lastname, double Salary){
        this.firstname = firstname;
        this.lastname = lastname;
        this.salary = salary;
    }

public String getFirstname() {
    return firstname;
}

public void setFirstname(String firstname) {
    this.firstname = firstname;
}

public String getLastname() {
    return lastname;
}

public void setLastname(String lastname) {
    this.lastname = lastname;
}

public double getSalary() {
    return salary;
}

public void setSalary(double salary) {
    this.salary = salary;
}



}

 class NameDialog{
 public static void main( String[] args )
 {

String firstname = JOptionPane.showInputDialog("What is your first name?");
String lastname = JOptionPane.showInputDialog("What is your last name?");
String salarystring = JOptionPane.showInputDialog("What is your salary?");
Double salary = Double.parseDouble(salarystring);
Employee user = new Employee (firstname, lastname, salary);
String message = String.format("Hello, %s %s.", user.firstname, user.lastname);
JOptionPane.showMessageDialog(null, message);
double raise = (user.salary)*1.1;

JOptionPane.showMessageDialog(null, "Congratulations, you have received a raise! Your salary is now "+raise);
  } 
}
4

2 に答える 2

9

コンストラクターにはタイプミスがあります。

Employee (String firstname, String lastname, double Salary){

double salary小文字にする必要があります。この行なので:

this.salary = salary;

と同等なので何もしませんthis.salary = this.salary

パラメーターを小文字の給与に変更するとすぐに、コンストラクターに渡した値が給与フィールドに割り当てられます。

于 2013-02-18T13:19:19.880 に答える
5

コンストラクターに問題があるようです。

Employee (String firstname, String lastname, double Salary){
    this.firstname = firstname;
    this.lastname = lastname;
    this.salary = salary; //You assign salary to itself, since the 
                          //parameter is Salary (with caps)
}

この方法salaryは設定されず、デフォルト値のままになります0。問題の残りはただの数学です。これに行を変更します

 this.salary = Salary

問題を解決します。たとえば、Javaの命名規則を使用し、パラメータに小文字で名前を付けることをお勧めしますnewSalary

于 2013-02-18T13:19:38.817 に答える