我如何询问用户是否要修改信息然后应用更改?

How can I ask a user if they want to modify information and then apply the change?

这是我见过的基本 Java 练习题,但我想更进一步,包括询问用户是否要修改员工信息的功能,如果是的话哪一个,然后将请求的修改应用于员工并再次显示更新后的员工信息。

到目前为止,这是我的代码:

public class Employee
{
    private String firstName;
    private String lastName;
    private double monthlySalary;
    private String decision;

    // constructor to initialize first name, last name and monthly salary
    public Employee( String first, String last, double salary )
    {
     firstName = first;
     lastName = last;

        if ( salary >= 0.0 ) // determine whether salary is positive
            monthlySalary = salary;
    } // end three-argument Employee constructor

    // set Employee's first name
    public void setFirstName( String first )
    {
        firstName = first;
    } // end method setFirstName

    // get Employee's first name
    public String getFirstName()
    {
        return firstName;
    } // end method getFirstName

    // set Employee's last name
    public void setLastName( String last )
    {
        lastName = last;
    } // end method setLastName

    // get Employee's last name
    public String getLastName()
    {
        return lastName;
    } // end method getLastName

    // set Employee's monthly salary
    public void setMonthlySalary( double salary )
    {
        if ( salary >= 0.0 ) // determine whether salary is positive
            monthlySalary = salary;
    } // end method setMonthlySalary

    // get Employee's monthly salary
    public double getMonthlySalary()
    {
        return monthlySalary;
    } // end method getMonthlySalary

    // set Employee's new monthly salary
    public void setNewMonthlySalary( double salary )
    {
        monthlySalary = salary;
    } // end method setMonthlySalary

    // get Employee's new monthly salary
    public double getNewMonthlySalary()
    {
        return monthlySalary;
    } // end method getMonthlySalary

} // end class Employee

和 EmployeeTest class

import java.util.Scanner;

public class EmployeeTest
{

    public static void main( String args[] )
    {
        Employee employee1 = new Employee( "Bo", "Jackson", 8875.00 );
        Employee employee2 = new Employee( "Cam", "Newton", 13150.75 );
        // create Scanner to obtain input from command window
        Scanner input = new Scanner(System.in);

        // display employees
        System.out.printf( "Employee 1: %s %s; Yearly Salary: %.2f\n",
                employee1.getFirstName(), employee1.getLastName(),
                12 * employee1.getMonthlySalary() );
        System.out.printf( "Employee 2: %s %s; Yearly Salary: %.2f\n",
                employee2.getFirstName(), employee2.getLastName(),
                12 * employee2.getMonthlySalary() );

        // enter new employee salaries
        System.out.println( "Enter " + employee1.getFirstName() + "'s new salary:" );
        double newSalary1 = input.nextDouble();
        employee1.setNewMonthlySalary( newSalary1 );
        System.out.println( "Enter " + employee2.getFirstName() + "'s new salary:" );
        double newSalary2 = input.nextDouble();
        employee2.setNewMonthlySalary( newSalary2 );

        // display employees with new yearly salary
        System.out.printf( "Employee 1: %s %s; Yearly Salary: %.2f\n",
                employee1.getFirstName(), employee1.getLastName(),
                12 * newSalary1 );
        System.out.printf( "Employee 2: %s %s; Yearly Salary: %.2f\n",
                employee2.getFirstName(), employee2.getLastName(),
                12 * newSalary2 );
    } // end main

 } // end class EmployeeTest

显示员工信息后,我想提示用户选择是否更改员工的薪水。如果是这样,那么是哪个员工。进行更改后,我想显示修改后的结果。处理此问题的最简单方法是什么?

在对我的嵌套 ifs 语句进行一些调整后,我想出了一种方法来实现我正在寻找的东西。我不能说我在寻找家庭作业的答案,因为我已经不在学校了。我只是在寻找一种更简单的方法,通过选择阻力最小的路径来实现我的目标……这会让编码更容易、更简洁。虽然我的回答比我想要的稍微大一些,但它仍然完成了手头的任务。我将更加努力地改进应用程序,但这是我想出的:

import java.util.Scanner;
import javax.swing.JOptionPane;
import javax.swing.JDialog;

public class EmployeeTest
{

    public static void main( String args[] )
    {
        // create Scanner to obtain input from command window
        Scanner input = new Scanner(System.in);
        Employee employee1 = new Employee( "Bo", "Jackson", 8875.00 );
        Employee employee2 = new Employee( "Cam", "Newton", 13150.75 );

        // display employees
        System.out.printf( "Employee 1: %s %s; Yearly Salary: %.2f\n",
                employee1.getFirstName(), employee1.getLastName(),
                12 * employee1.getMonthlySalary() );
        System.out.printf( "Employee 2: %s %s; Yearly Salary: %.2f\n",
                employee2.getFirstName(), employee2.getLastName(),
                12 * employee2.getMonthlySalary() );

        JDialog.setDefaultLookAndFeelDecorated(true);
        int response1 = JOptionPane.showConfirmDialog(null, "Do you wnat to change an employee's salary?", 
                "Confirm", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE);

            if (response1 == JOptionPane.NO_OPTION)// if NO is clicked
            {
                System.out.println("See you next time");
            } else if (response1 == JOptionPane.YES_OPTION)// if YES is clicked
            {
                // option to change the salary for employee 1
                int response2 = JOptionPane.showConfirmDialog(null, "Would you like to change " + employee1.getFirstName() + " " + employee1.getLastName() + "'s salary:", 
                        "Confirm", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE);
                if (response2 == JOptionPane.NO_OPTION)// if NO is clicked
                {
                    // option to change the salary for employee 2
                    int response3 = JOptionPane.showConfirmDialog(null, "Would you like to change " + employee2.getFirstName() + " " + employee2.getLastName() + "'s salary:", 
                            "Confirm", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE);
                    if (response3 == JOptionPane.NO_OPTION)
                            {
                                System.out.println("See you next time");
                            } else if (response3 == JOptionPane.YES_OPTION)// if YES is clicked
                            {
                                // enter new salary for employee 2
                                System.out.println( "Enter " + employee2.getFirstName() + " " + employee2.getLastName() + "'s new salary:" );
                                double newSalary2 = input.nextDouble();
                                employee2.setNewMonthlySalary( newSalary2 );

                                // display unchanged salary for employee 1
                                System.out.printf( "Employee 1: %s %s; Yearly Salary: %.2f\n",
                                        employee1.getFirstName(), employee1.getLastName(),
                                        12 * employee1.getMonthlySalary() );

                                // display new yearly salary for employee 2
                                System.out.printf( "Employee 2: %s %s; Yearly Salary: %.2f\n",
                                        employee2.getFirstName(), employee2.getLastName(),
                                        12 * newSalary2 );
                            } else if (response3 == JOptionPane.CLOSED_OPTION)// if JOPTIONPANE is closed
                            {
                                System.out.println("JOptionPane closed");
                            }// END RESPONSE 3
                } else if (response2 == JOptionPane.YES_OPTION)// if YES is clicked
                {
                    // enter new salary for employee 1
                    System.out.println( "Enter " + employee1.getFirstName() + " " + employee1.getLastName() + "'s new salary:" );
                    double newSalary1 = input.nextDouble();
                    employee1.setNewMonthlySalary( newSalary1 );

                    // display new yearly salary for employee 1
                    System.out.printf( "Employee 1: %s %s; Yearly Salary: %.2f\n",
                            employee1.getFirstName(), employee1.getLastName(),
                            12 * newSalary1 );
                    // display unchanged salary for employee 2
                    System.out.printf( "Employee 2: %s %s; Yearly Salary: %.2f\n",
                            employee2.getFirstName(), employee2.getLastName(),
                            12 * employee2.getMonthlySalary() );
                } else if (response2 == JOptionPane.CLOSED_OPTION)// if JOPTIONPANE is closed
                {
                    System.out.println("JOptionPane closed");
                }// END RESPONSE 2
                {

                }

            } else if (response1 == JOptionPane.CLOSED_OPTION)// if JOPTIONPANE is clicked
            {
                System.out.println("JOptionPane closed");
            }// END RESPONSE 1

    } // end main

 } // end class EmployeeTest

public class "Employee" 对于上面的 post 没有改变。