删除一个扫描仪,工资计划第3周

时间:2015-05-29 16:37:50

标签: java

我怎么能摆脱一台扫描仪?如果我只使用一个扫描仪,则在输出weekly_pay之后是:

  

员工姓名
  输入本周的工作小时数。

程序跳过询问员工姓名变量。对于两个扫描仪,它确实循环询问员工姓名应该如此。

//Week 3 Assignment 
package weeklypay2;

import java.util.Scanner; // importing the Java utility class scanner 

public class WeeklyPay2 // class WeeklyPay
{
    //main method
    public static void main(String[] args)
    {
        Scanner Scanner = new Scanner(System.in);
        Scanner Scanner1 = new Scanner(System.in);

        String employee_name = null; // variable for employee name
        double hours_worked = 0, // variable for weekly hours worked
        pay_rate = 0, // variable for pay rate per hour
        weekly_pay = 0; // weekly pay = hours * pay_rate

        while (employee_name!="stop")
        {
            System.out.println("");
            System.out.println("Employee Name"); // prompt, employees name
            employee_name = Scanner1.nextLine();

            if (employee_name.equalsIgnoreCase("stop"))  
            {  
                System.out.print("Exiting Program");  
                break;  
            } // ends if statement  
            else
            {  
                System.out.println("Enter the hours worked for the week");
                //prompt, hours worked for the current week
                pay_rate = Scanner.nextDouble();

                while(pay_rate < 0.01)
                {
                    System.out.print("ERROR!!, Input a postive number: \n");
                    pay_rate = Scanner.nextDouble();
                }

                System.out.println("Enter the employees hourly pay rate"); 
                // prompt, the employees pay rate
                hours_worked = Scanner.nextDouble(); 

                while(hours_worked < 0.01)
                {
                    System.out.print("ERROR!!, Input a postive number: \n");
                    hours_worked = Scanner.nextDouble();
                }

                weekly_pay = (double) hours_worked * (double) pay_rate; // setting the variable weekly_pay
                System.out.println(employee_name + "'s weekly pay is $" + weekly_pay ); // output the employees name and weekly pay
            }
        }
        Scanner.close();
        Scanner1.close();
    } //ends main method
} //ends class WeeklyPay

2 个答案:

答案 0 :(得分:1)

获取工作小时数后,使用Scanner1.nextLine()。

请参阅以下修改后的代码:

import java.util.Scanner; // importing the Java utility class scanner

public class WeeklyPay2 // class WeeklyPay
{
    //main method
    public static void main(String[] args) {

        Scanner Scanner1 = new Scanner(System.in);

        String employee_name = null; // variable for employee name
        double hours_worked = 0, // variable for weekly hours worked
                pay_rate = 0, // variable for pay rate per hour
                weekly_pay = 0; // weekly pay = hours * pay_rate

        //Scanner1.useDelimiter("//n");
        while (true) {

            System.out.println("");
            System.out.println("Employee Name"); // prompt, employees name

            employee_name = Scanner1.nextLine();

            if (employee_name.equalsIgnoreCase("stop"))

            {

                System.out.print("Exiting Program");

                break;

            }// ends if statement

            else {

                System.out.println("Enter the hours worked for the week");
//prompt, hours worked for the current week
                pay_rate = Scanner1.nextDouble();

                while (pay_rate < 0.01) {
                    System.out.print("ERROR!!, Input a postive number: \n");
                    pay_rate = Scanner1.nextDouble();
                }

                System.out.println("Enter the employees hourly pay rate");
                // prompt, the employees pay rate
                hours_worked = Scanner1.nextDouble();

                while (hours_worked < 0.01) {
                    System.out.print("ERROR!!, Input a postive number: \n");
                    hours_worked = Scanner1.nextDouble();
                    //Scanner1.
                }

                Scanner1.nextLine();
                weekly_pay = (double) hours_worked * (double)
                        pay_rate; // setting the variable weekly_pay

                System.out.println(employee_name + "'s weekly pay is $" + weekly_pay); // output the employees name and weekly pay

            }
        }

        Scanner1.close();

    } //ends main method


}//ends class WeeklyPay

答案 1 :(得分:1)

我要说的第一件事就是小心命名你的扫描仪。不要以资本开始。现在最重要的是你不想使用!=来比较字符串,这不适用于字符串变量。有一种有趣的方法可以比较字符串 .equals() .equalsIgnoreCase(),具体取决于您是否希望它区分大小写。现在,在更改代码中的这些内容之后,它可以正常工作。此外,Java还包括一种格式化货币的方法。您的付款号码缺少小数。如果您查看我在扫描仪后添加的NumberFormat,然后查看最后的println,您可以看到它非常简单易用。

  import java.text.NumberFormat;
  import java.util.Scanner; // importing the Java utility class scanner 

  public class WeeklyPay2 // class WeeklyPay
  {
 //main method
 public static void main(String[] args)
{
    Scanner scanner = new Scanner(System.in);
    NumberFormat format = NumberFormat.getCurrencyInstance();
    String employee_name = "";
    double hours_worked = 0, // variable for weekly hours worked
    pay_rate = 0, // variable for pay rate per hour
    weekly_pay = 0; // weekly pay = hours * pay_rate

    while (!employee_name.equalsIgnoreCase("stop"))
    {

        System.out.println();
        System.out.print("Employee Name: "); 

        employee_name = scanner.nextLine();

        if (employee_name.equalsIgnoreCase("stop"))  
        {  
            System.out.print("Exiting Program");  
            break;
        } // ends if statement  
        else
        {  
            System.out.print("Enter the hours worked for the week: ");
            //prompt, hours worked for the current week
            pay_rate = scanner.nextDouble();

            while(pay_rate < 0.01)
            {
                System.out.print("ERROR!!, Input a postive number:  ");
                pay_rate = scanner.nextDouble();
            }

            System.out.print("Enter the employees hourly pay rate: "); 
            // prompt, the employees pay rate
            hours_worked = scanner.nextDouble(); 

            while(hours_worked < 0.01)
            {
                System.out.print("ERROR!!, Input a postive number: \n");
                hours_worked = scanner.nextDouble();
            }

            weekly_pay = (double) hours_worked * (double) pay_rate; // setting the variable weekly_pay
            System.out.println(employee_name + "'s weekly pay is: " + format.format(weekly_pay)); // output the employees name and weekly pay
            scanner.nextLine();
        }
    }
    scanner.close();

} //ends main method
} //ends class WeeklyPay

这是我们看到的输出:

enter image description here

哦,PS:通过提示输入同一条线来保持程序清洁,更直观,更好看。通过各种方式在输入之后添加换行符,但不是之前:)