Java에서 수행 할 학교 임무가 있으므로 프로그램을 만들었지 만 출력물을 제공하지 않습니다. 임 아직 초급 그래서 그 문제를 해결하는 데 도움이 PLZ. 내 코드의 첫 번째 절반은 joptionpane을 사용하지만 콘솔에 출력을 표시하려고합니다. 당신이 개체의 인스턴스를 만들 때java NullPointerException 오류입니다. 출력 없음
Double empID;
String empName;
String empDept;
// etc.
, 당신은 초기화하는 방법을 문의 : 당신은 기본적으로 아무것도 초기화되지 않은 값의 무리가
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);
}
}
stacktrace에서 무엇을 말합니까? – Reimeus
스택 트레이스는 어디에 있습니까? 또한 콘솔 만 사용하려면'JOptionPane'과 같은 스윙 위젯을 사용하지 마십시오. 당신은'BufferedReader'와'InputStreamReader' 클래스를 보길 원할 것입니다. – toddlermenot
주 : main()의 모든 문은 새로운 payroll2 객체를 만들고, 거기에 메소드를 호출 한 다음 * throw합니다. getPayroll() 메소드는 참조 생성자의 모든 필드를 'null'로 초기화 한 기본 생성자로 생성 된 객체에서 호출됩니다. –