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

时间:2015-09-14 15:56:07

标签: java eclipse if-statement switch-statement printf

This is a basic Java practice question that I have seen, but I wanted to step it up a notch and include functionalities that ask the user whether or not they want to modify an employee's information and if so which one, then apply the requested modifications to the employee and display the updated employees information one more time.

Here is my code thus far:

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

and the 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

After displaying the employee information I would like to prompt the user to choose whether or not to make a change to an employee's salary. If so, then which employee. After the change is made I would like to display the the modified results. What would be the easiest way to handle this?

1 个答案:

答案 0 :(得分:0)

在对我的嵌套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
公共类“员工”没有因上述帖子而改变。

相关问题