0

我正在做我的中期项目,我或多或少已经完成了。我遇到的唯一问题是,当我运行程序并要求我输入员工的全名时,编译器会向我抛出有关扫描仪的异常。我从Scanner输入转到“扫描仪用户输入”,但它仍然无法正确编译。任何有关问题所在的提示将不胜感激。

package midterm;

import java.util.Scanner;

public class Midterm {

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

        System.out.print("If you wish to enter another's employee's inforamtion"
                        + " please press 1, else to exit enter 0.");
        int choice = user_input.nextInt();

        if (choice == 1) {
            System.out.print("What is the employee's full name. ");
            String empName = user_input.next();
            System.out.printf("Please enter the number of hours that the employee has worked. ");
            double hoursWorked = user_input.nextDouble();
            System.out.printf("Please enter the employee's hourly pay rate. ");
            double payRate = user_input.nextDouble();

            displayPay(empName, calculatePay(hoursWorked, payRate));
        }
        else if (choice == 0) {
            System.exit(0);
        }
    }

    public static double calculatePay(double hours, double pay) {
        double wages = 0;

        if (hours <= 40) {
            wages = hours * pay;
        }

        if (hours > 40) {
            double regPay = hours * pay;
            double overTime = (hours - 40) * pay * 1.5;
            wages = regPay + overTime;
        }

        return wages;
    }

    public static void displayPay(String name, double empWage) {
        System.out.print("-----------------------------------------");
        System.out.print("Employee Name: " + name);
        System.out.print("Pay Check Amount: $" + empWage);
        System.out.print("-----------------------------------------");
    }
}
4

4 回答 4

1

错误在这里:

System.out.print ("What is the employee's full name. ");
String empName = user_input.next();

next()读取所有内容,直到下一个分隔符,默认情况下是空格。因此,如果有人输入名字和姓氏(用空格分隔),则只会读取名字。因此,当您user_input.nextDouble()稍后调用时,仍有一部分名称要读取,并且程序会发出嘶哑的声音,因为下一个标记(在本例中为姓氏)无法解析为double.

由于这听起来像是一个学校项目,我不会确切地说明如何解决它。

于 2013-10-12T00:13:29.060 回答
0

尝试使用:

System.out.print ("What is the employee's full name. ");
String empName = user_input.nextLine();
于 2013-10-12T00:14:44.853 回答
0

不要使用user_input.next();

而不是那个,试试这个:user_input.nextLine();

于 2013-10-12T00:15:58.270 回答
0

非常直截了当!这是您可以使用扫描仪类接受来自键盘的输入的方式:

    String str;
    Scanner in = new Scanner(System.in);

    System.out.println("Enter any string :-");
    str = in.nextLine();
    System.out.println(str); // will print the string that you entered.
于 2013-10-12T00:24:28.900 回答