0

私は中間プロジェクトに取り組んでおり、多かれ少なかれ終了しています。私が抱えている唯一の問題は、プログラムを実行すると、従業員の完全な名前を入力するように求められ、コンパイラーがスキャナーに関する例外をスローすることです。入力からScanner「scanner user_input」に移行しましたが、それでも正しくコンパイルされません。問題が何であるかについてのヒントをいただければ幸いです。

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()後で呼び出すと、名前の一部を読み取る必要があり、次のトークン (この場合は姓) を として解析できないため、プログラムは croak しますdouble

これは学校のプロジェクトのように聞こえるので、正確な修正方法は言いません。

于 2013-10-12T00:13:29.060 に答える
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 に答える
0

使用してみてください:

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