我做了一个代码,它读取一个文件,其中包含一些员工、工资和他们的排名,根据他们的排名,我们如何将奖金百分比添加到他们的工资中...

 String phrases;
 int salary=0;
 try {
    FileReader in = new FileReader("bonus.txt");
    BufferedReader readFile = new BufferedReader(in);
    while ((phrases = readFile.readLine()) != null) {
       System.out.println(phrases);
       double bonus;

       if(phrases.contains("1")){
          bonus=salary/0.03;
          System.out.println("Bonus: " + bonus);
       }else if(phrases.contains("2")){
          bonus=salary/0.08;
          System.out.println("Bonus: " + bonus);
       }else if(phrases.contains("3")){
          bonus=salary/0.20;
          System.out.println("Bonus: " + bonus);
       }

       // System.out.println();
    }
    readFile.close();
    in.close();
 }catch (IOException e) {
    System.out.println("Problem reading file.");
    System.err.println("IOException: " + e.getMessage());
 }

它输出:
 Jame   900000  1
 Bonus: 0.0
 Jane   60000   2
 Bonus: 0.0
 Don    866000  3
 Bonus: 0.0

我不知道为什么

最佳答案

如果您有一个像下面这样的 employeeBonus.txt 文件。

Jame    900000  2
Jane    60000   1
Don     866000  3

我认为您将有三个标记作为字符串,因此您可以使用 stringtokenizer 类来获得薪水和成绩。

在文件的第一行是
Jame    900000  2

编码字符串的结果是
Jame%20%20%20%20900000%092

我终于发现文本文件的内容通过 URL 编码与空格和制表符混合在一起。

所以,这种类型的用法如下,
StringTokenizer stTok = new StringTokenizer(phrase, " \t");

它从第三个和第二个 token 中获取薪水和奖金值的标识符。
name = stTok.nextToken(); //first token
salary = Integer.valueOf(stTok.nextToken()).intValue(); //second token
grade = stTok.nextToken();

[源代码]
package com.tobee.tests.inout;

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.StringTokenizer;

public class CheckBounsFromFile {
    public static void main(String[] args) {
        String name, phrase, grade;
        double bonus = 0;
        int salary = 0;
        BufferedReader readFile = null;
        try {
            readFile = new BufferedReader(new FileReader("resource/aa/employeeBonus.txt"));

            while ((phrase = readFile.readLine()) != null) {
                //System.out.println(phrase);

                StringTokenizer stTok = new StringTokenizer(phrase, " \t");

                name = stTok.nextToken();

                salary = Integer.valueOf(stTok.nextToken()).intValue();

                grade = stTok.nextToken();

                if(grade!= null && !grade.equals(""))
                {
                    if (grade.equals("1")) {
                        bonus = salary / 0.03;
                    } else if (grade.equals("2")) {
                        bonus = salary / 0.08;

                    } else if (grade.equals("3")) {
                        bonus = salary / 0.20;
                    }

                    System.out.printf("name[%s]salary[%d]Bonus[%f] \n",name, salary, bonus);
                }

            }

        } catch (IOException e) {
            System.out.println("Problem reading file.");
            System.err.println("IOException: " + e.getMessage());
        }
        finally
        {
            try {
                readFile.close();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }

    }
}

[结果]
name[Jame]salary[900000]Bonus[30000000.000000]
name[Jane]salary[60000]Bonus[750000.000000]
name[Don]salary[866000]Bonus[4330000.000000]

祝你今天过得愉快。

关于java - 如何添加奖金?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50383176/

10-10 05:49