薪资计划第2部分(运行时出问题)

时间:2012-05-05 03:32:02

标签: java

// Week 3 Checkpoint1: Payroll Program Part 2
// Due May 04, 2012
// Created by: Kennith Adkins

import java.util.Scanner;

public class Assignment1
 {
    public static void main ( String[] args )
    {
        Scanner input = new Scanner(System.in);

        // Variables
        String employeeName = null;
        int hours;
        double rate;
        double pay;

        while ( employeeName != "stop")
        {
        // Request information from user
        System.out.print ( "Employee Name: ");
        employeeName = input.nextLine();
        System.out.print ( "Hourly Rate: ");
        rate = input.nextDouble();
        System.out.print ( "Number of Hours worked this week: ");
        hours = input.nextInt();

        // Calculate pay
        pay = rate * hours;

        // Display information
        System.out.printf ("%s will get paid $%.2f this week.\n", employeeName, pay);


        }
    }
}

当我运行程序时它运行正常。当它点击循环并重复时,员工姓名:和每小时费率似乎很多。另外,如何在输入员工姓名后停止立即停止?

1 个答案:

答案 0 :(得分:0)

由于这似乎是一个家庭作业问题,我会指出你的学习方向。

因此,对于员工姓名问题,我会将您重定向到How do I compare strings in Java?

scrunching问题是因为当您重新进入循环并调用扫描程序(输入).nextLine时,它最终会实际读取它尚未看到的输入文本。因此,一种选择是切换到其他东西舔BufferedReader或将扫描仪减速度向下移动到循环中。

更多研究

我没有使用扫描仪类,看到这个后我有点困惑。问题实际上是nextInt和nextDouble。他们不会要求退货包机,因此当你下次拨打下一行时它会收到剩余的返回字符。

因此,我在重新输入时重置扫描仪的选项适用于此特定情况,但您应该使用2个扫描仪或离开扫描仪。

Scanner txtinput = new Scanner(System.in);
Scanner numberinput = new Scanner(System.in);