在Java中,两个相乘的两个是零?

Bli*_*meo 3 java double

所以,我在这里有一个非常奇怪的问题.当我将值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);
  } 
}
Run Code Online (Sandbox Code Playgroud)

cow*_*wls 9

你的构造函数有一个拼写错误:

Employee (String firstname, String lastname, double Salary){
Run Code Online (Sandbox Code Playgroud)

double salary应该是小写的.正如这条线:

this.salary = salary;
Run Code Online (Sandbox Code Playgroud)

什么都没有,因为它相当于this.salary = this.salary.

只要将参数更改为小写薪水,它就会将您传递给构造函数的值分配给薪水字段.


Fri*_*itz 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)
}
Run Code Online (Sandbox Code Playgroud)

这种方式salary未设置并保持默认值0.问题的其余部分只是数学.将行更改为此

 this.salary = Salary
Run Code Online (Sandbox Code Playgroud)

将解决这个问题,我建议您使用Java的命名约定并命名以小写字母开头的参数,newSalary例如.