0

私はJavaが初めてです-

従業員の賃金と週あたりの労働時間に関するデータを含むテキスト ファイルがあります。各セクションの上のテキスト見出しをスキップしながらデータを読み通す方法を理解し、データを準備して、いくつかの簡単な計算を実行できるようにする必要があります。

これは入力ファイルのサンプルです:

Shop One
4
26 8
13 6.5
17 6
32 7.5

Shop Two
1
42 8

Shop Three
0

最初の数字は従業員数で、その後に各従業員の時間と賃金が続きます。

ここに私がこれまでに持っているものがあります:

import java.io.*;
import java.util.*;

public class program3 
{
static Scanner console = new Scanner(System.in);    

public static void main(String[] args) throws FileNotFoundException
{
    System.out.println("Please enter your recommended maximum total staff cost per week: ");
    double RM = console.nextDouble();   

    Scanner inFile = new Scanner(new FileReader("inFile.txt")); 

    int shopStaff;

    for (int i = 0; i < (shopStaff = inFile.nextInt()); i++) //number of times loop executes will be equal to number of staff
    {
        double shop1Tot = 0;
        double shop1SH = inFile.nextDouble(); //shop1SH = Shop One Staff Hours
        double shop1SW = inFile.nextDouble(); //shop1SW = Shop One Staff Wage               
        shop1Tot = shop1Tot + (shop1SH * shop1SW); //calculates total staff wages per week
        {
            if (shop1Tot <= RM) {
                System.out.println("details written to outFile"); 
                PrintWriter outFile = new PrintWriter ("outFile.txt");
                outFile.println("details"); }

            else if (shopTot > RM){
                System.out.println("details written to screen only"); }

ファイルの「Shop One」の部分をスキップして、数字だけを読み取る方法が必要だと思います。方法がわかりません。InputMismatchException が発生し続けます。どんな助けでも大歓迎です。

4

1 に答える 1

1

あなたのレコードにはシーケンスがないように見えるため、いくつかの仮定に基づいて読み取ることができます。次のコード例は、実装を進める方法を理解するのに役立つ場合があります。

    // provide physical location of your file, I have assumed it is present
    // in current directory
    FileReader fis = new FileReader("test.txt");
    BufferedReader br = new BufferedReader(fis);
    String line = null;
    // to keep count of shops in the file
    int shopCount = 1;
    // read line by line till you reach end of file
    while ((line = br.readLine()) != null) {
        // assuming each string starts with Shop
        if (line.startsWith("Shop")) {
            System.out.println("Shop " + shopCount);
            // assuming first line after string heading is number of
            // employees
            int numberOfEmployees = Integer.parseInt(br.readLine());
            System.out.println("Number of employees " + numberOfEmployees);
            // for each employee read their wage and salary
            for (int i = 0; i < numberOfEmployees; i++) {
                // assuming wage and number of hours are separated by a
                // space
                // wage is of type int and number of hours is of type double
                StringTokenizer st = new StringTokenizer(br.readLine());
                while (st.hasMoreTokens()) {
                    // convert wage to int
                    int wages = Integer.parseInt(st.nextToken());
                    // convert number of hours to double
                    double hours = Double.parseDouble(st.nextToken());
                    System.out
                            .println("Wages " + wages + " Hours " + hours);

                }
            }// end reading details of each employee
                // increment shop count to read details for next shop
            shopCount++;
        }
    }
于 2013-11-28T18:19:46.523 に答える