0
// 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);


        }
    }
}

プログラムを実行すると、正常に実行されます。それがループにぶつかって繰り返されると、従業員名:と時給が集まっているように見えます。また、従業員名としてstopと入力した後、すぐに停止するにはどうすればよいですか?

4

1 に答える 1

0

これは宿題の質問のように思われるので、学習の方向性を示します。

従業員名の質問については、Javaで文字列を比較するにはどうすればよいですか?にリダイレクトします。

スクランチングの問題は、ループに再び入り、scanner(input).nextLineを呼び出すと、まだ表示されていない入力テキストを実際に読み取ることになります。したがって、1つのオプションは、BufferedReaderをなめるか、スキャナーの減速をループ内に移動することです。

より多くの研究

私はスキャナークラスであまり仕事をしていませんでした、そしてこれを見た後、私は幾分混乱しました。問題は実際にはnextIntとnextDoubleです。彼らはリターンチャーターを主張しないので、次に次の行を呼び出したときに残りのリターン文字を拾います。

したがって、再入力時にスキャナーをリセットするという私のオプションは、この特定のケースでは機能しますが、2つのスキャナーを使用するか、スキャナーから移動する必要があります。

Scanner txtinput = new Scanner(System.in);
Scanner numberinput = new Scanner(System.in);
于 2012-05-05T03:35:18.743 に答える