所以我有一个用Java做的学校作业,我已经创建了程序,但它没有给我一个输出。我仍然是初学者,所以PLZ帮助我解决问题。我的代码的前半部分使用joptionpane,但我想在控制台中显示输出。这是我的代码:
import java.util.Scanner;
import javax.swing.JOptionPane;
public class payroll2
{
public static void main(String args[])
{
new payroll2().SetPayrollDetail();
new payroll2().SetBonus();
new payroll2().SetCommission();
new payroll2().SetNssf();
new payroll2().SetNetSalary();
new payroll2().GetPayroll();
}
Scanner myScanner=new Scanner(System.in);
Double empID;
String empName;
String empDept;
String designation;
Double basicSalary;
Double bonus;
Double commission;
Double nssf;
Double netSalary;
public void SetPayrollDetail()
{
empID = Double.parseDouble(JOptionPane.showInputDialog(null, "Enter ID: ", "ID",JOptionPane.QUESTION_MESSAGE));
empName = JOptionPane.showInputDialog(null, "Enter Name: ", "Name",JOptionPane.QUESTION_MESSAGE);
empDept = JOptionPane.showInputDialog(null, "Enter Department (Marketing or Other): ", "Department",JOptionPane.QUESTION_MESSAGE);
designation = JOptionPane.showInputDialog(null, "Enter Designation (Manager, Executive or Other): ", "Designation",JOptionPane.QUESTION_MESSAGE);
basicSalary = Double.parseDouble(JOptionPane.showInputDialog(null, "Enter Basic Salary: ", "Basic Salary",JOptionPane.QUESTION_MESSAGE));
}
public void SetBonus()
{
if(basicSalary < 1500){
bonus = 0.0;
}
else if(basicSalary>=1500 && basicSalary<3000){
bonus = basicSalary * (12/100);
}
else if(basicSalary>=3000 && basicSalary<5000){
bonus = basicSalary * (15/100);
}
else{
bonus = basicSalary * (25/100);
}
System.out.println(bonus);
}
public void SetCommission()
{
if( empDept.equalsIgnoreCase("other") ){
commission = 0.0;
}
else if( empDept.equalsIgnoreCase("marketing") && designation.equalsIgnoreCase("manager") ){
commission = basicSalary * (30/100);
}
else if( empDept.equalsIgnoreCase("marketing") && designation.equalsIgnoreCase("executive") ){
commission = basicSalary * (15/100);
}
else if( empDept.equalsIgnoreCase("marketing") && designation.equalsIgnoreCase("other") ){
commission = basicSalary * (10/100);
}
else{
commission = 0.0;
}
System.out.println(commission);
}
public void SetNssf()
{
if(basicSalary < 1500){
nssf = basicSalary * (5/100);
}
else if(basicSalary>=1500 && basicSalary<3000){
nssf = basicSalary * (8/100);
}
else if(basicSalary>=3000 && basicSalary<5000){
nssf = basicSalary * (12/100);
}
else if(basicSalary>=5000 && basicSalary<7000){
nssf = basicSalary * (15/100);
}
else if(basicSalary>=7000 && basicSalary<10000){
nssf = basicSalary * (20/100);
}
else{
nssf = basicSalary * (25/100);
}
System.out.println(nssf);
}
public void SetNetSalary()
{
netSalary = ( basicSalary + commission + bonus ) - nssf;
System.out.println(netSalary);
}
public void GetPayroll()
{
System.out.println("Payroll Details \n _____________________");
System.out.println("ID:\t" + empID);
System.out.println("name:\t" + empName);
System.out.println(bonus);
System.out.println(commission);
System.out.println(nssf);
System.out.println(netSalary);
}
}
答案 0 :(得分:3)
默认情况下,您有一堆未初始化为任何值的值:
Double empID;
String empName;
String empDept;
// etc.
创建对象的实例时,可以调用方法来初始化它们:
new payroll2().SetPayrollDetail();
但是你不能保持那个实例。您立即创建一个全新的实例并尝试对其进行操作:
new payroll2().SetBonus();
这个新实例从未将其值初始化为任何值。所以它不能使用这些值。相反,您希望保留该原始实例,以便您可以对 进行操作:
payroll2 instance = new payroll2();
instance.SetPayrollDetail();
instance.SetBonus();
// etc.
答案 1 :(得分:0)
每次进行操作时都会重新创建payroll2实例。使用单个实例。
payroll2 p = new payroll2();
p.SetPayrollDetail();
p.SetBonus();
p.SetCommission();
p.SetNssf();
p.SetNetSalary();
p.GetPayroll();
此外,方法应该以一个小写字母开头,类名称带有大写字母。