public class ParamTest { public static void main(String[] args) {
System.out.println("Testing tripleValue");
double percent = 10;
System.out.println("Before: percent="+percent);
tripleValue(percent);
System.out.println("After: percent="+percent);
System.out.println("\nTesting tripleSalary:");
Employee harry = new Employee("Harry",50000);
System.out.println("Before: salary="+harry.getSalary());
tripleSalary(harry);
System.out.println("After: salary="+harry.getSalary());
System.out.println("\nTesting swap:");
Employee a = new Employee("Alice",70000);
Employee b = new Employee("Bob",60000);
System.out.println("Before: a = "+a.getName()+" "+"b = "+b.getName());
swap(a,b);
System.out.println("After: a = "+a.getName()+" "+"b = "+b.getName());
}
public static void tripleValue(double x)
{
x=3*x;
System.out.println("End fo method: x=" +x);
}
public static void tripleSalary(Employee x)
{
x.raiseSalary(200);
System.out.println("End of method: salary ="+x.getSalary());
}
public static void swap(Employee x,Employee y)
{
Employee temp = x;
x = y;
y = temp;
System.out.println("End of method: x="+x.getName()+" y="+y.getName());
}
} class Employee {
public Employee (String n, double s)
{
name = n;
salary = s;
}
public String getName()
{
return name;
}
public double getSalary()
{
return salary;
}
public void raiseSalary (double byPercent)
{
double raise = salary*byPercent/100;
salary +=raise;
}
private String name;
private double salary;
}
报错:efore: salary=50000.0
Exception in thread "main" java.lang.NoSuchMethodError: Employee.raiseSalary(D)V
at ParamTest.tripleSalary(ParamTest.java:32)
at ParamTest.main(ParamTest.java:14)
请问这个是什么问题?
System.out.println("Testing tripleValue");
double percent = 10;
System.out.println("Before: percent="+percent);
tripleValue(percent);
System.out.println("After: percent="+percent);
System.out.println("\nTesting tripleSalary:");
Employee harry = new Employee("Harry",50000);
System.out.println("Before: salary="+harry.getSalary());
tripleSalary(harry);
System.out.println("After: salary="+harry.getSalary());
System.out.println("\nTesting swap:");
Employee a = new Employee("Alice",70000);
Employee b = new Employee("Bob",60000);
System.out.println("Before: a = "+a.getName()+" "+"b = "+b.getName());
swap(a,b);
System.out.println("After: a = "+a.getName()+" "+"b = "+b.getName());
}
public static void tripleValue(double x)
{
x=3*x;
System.out.println("End fo method: x=" +x);
}
public static void tripleSalary(Employee x)
{
x.raiseSalary(200);
System.out.println("End of method: salary ="+x.getSalary());
}
public static void swap(Employee x,Employee y)
{
Employee temp = x;
x = y;
y = temp;
System.out.println("End of method: x="+x.getName()+" y="+y.getName());
}
} class Employee {
public Employee (String n, double s)
{
name = n;
salary = s;
}
public String getName()
{
return name;
}
public double getSalary()
{
return salary;
}
public void raiseSalary (double byPercent)
{
double raise = salary*byPercent/100;
salary +=raise;
}
private String name;
private double salary;
}
报错:efore: salary=50000.0
Exception in thread "main" java.lang.NoSuchMethodError: Employee.raiseSalary(D)V
at ParamTest.tripleSalary(ParamTest.java:32)
at ParamTest.main(ParamTest.java:14)
请问这个是什么问题?
把他改个double型
x.raiseSalary(Double.valueOf(200));
Before: percent=10.0
End fo method: x=30.0
After: percent=10.0Testing tripleSalary:
Before: salary=50000.0
End of method: salary =150000.0
After: salary=150000.0Testing swap:
Before: a = Alice b = Bob
End of method: x=Bob y=Alice
After: a = Alice b = Bob
Before: percent=10.0
End fo method: x=30.0
After: percent=10.0Testing tripleSalary:
Before: salary=50000.0
Exception in thread "main" java.lang.NoSuchMethodError: Employee.raiseSalary(D)V
at ParamTest.tripleSalary(ParamTest.java:32)
at ParamTest.main(ParamTest.java:14)
为什么会是这样啊?