2017-06-18 1 views
1

Donc je travaille sur un projet pour obtenir des données à partir d'un fichier texte pour calculer des choses comme le paiement et la taxe. C'est ce que j'ai jusqu'ici et je ne sais pas où aller à partir d'ici. Je ne peux même pas ouvrir le fichier texte pour les données. Toute aide serait appréciée!comment obtenir des informations d'un fichier et l'utiliser dans un programme java (ArrayList)

newdata.txt 
id; name; position; hourly rate; hours worked 

C'est le fichier texte contenant les données d'entrée ^.


La sortie devrait être quelque chose comme ceci:

Sortie:

ID de l'employé: 1

Nom de l'employé: ab

Position: c

salaire brut : $ 400000.00

Taxes fédérales: 120000,00 $

Pay net: 280000,00 $


fichier de sortie:

1; ab c; $ 280000,00

...

package payroll; 
import java.util.ArrayList; 
import java.util.Scanner; 
import java.io.File; 
import java.io.FileReader; 
import java.io.PrintWriter; 

public class Employee { 

    private int id; 
    private String name; 
    private double wage; 
    private double hoursWorked; 


    public int getId() { 
     return id; 
    } 

    public void setId(int id) { 
     this.id = id; 
    } 

    public String getName() { 
     return name; 
    } 

    public void setName(String name) { 
     this.name = name; 
    } 

    public double getWage() { 
     return wage; 
    } 

    public void setWage(double wage) { 
     this.wage = wage; 
    } 

    public double getHoursWorked() { 
     return hoursWorked; 
    } 

    public void setHoursWorked(double hoursWorked) { 
     this.hoursWorked = hoursWorked; 
    } 



    public String toString() { 
     return null; 

    } 




    public static void main(String[] args) { 
     File myFile = new File("newdata.txt"); 

     System.out.println(myFile); 

     Employee employee1 = new Employee(); 
     employee1.getId(); 
     employee1.getName(); 
     employee1.getWage(); 
     employee1.getHoursWorked(); 


    } 



} 
+0

'java.util.List lines = java.nio.file.Files.readAllLines (Paths.get (" newdata.txt "), StandardCharsets.UTF_8);' – matoni

+0

Quel est exactement le problème ici? Demandez-vous comment lire le texte à partir du fichier? Il y a déjà des tonnes de questions similaires ici déjà. Avez-vous lu certains d'entre eux comme [Lire un fichier texte en Java] (https://stackoverflow.com/questions/4716503/reading-a-plain-text-file-in-java?)? Quoi qu'il en soit, votre fichier texte ressemble à une variation du fichier CSV.Recherchez l'analyseur pour ce format et configurez-le pour utiliser '; 'en tant que séparateur et laissez-le faire son travail. – Pshemo

+0

@Pshemo le problème ici est que je veux transformer les données d'entrée à partir du fichier dans le format de sortie et le fichier et je suis coincé – spider249

Répondre

1

Voici une implémentation (peut avoir des erreurs plus petites, ne l'a pas compilé). Ajoutez ceci à la classe des employés et remplacer votre fonction main() avec celui ci-dessous:

public String position; 


public String getPosition(){ 
    return position; 
} 

public void setPosition(String position){ 
    this.position = position; 
} 

public String toString() { 
    return getID() + "; " + getName() + "; " + getPosition() + "; " + getWage() + "; " + getHoursWorked(); 
} 




public static void main(String[] args) { 
    Employee employee1 = new Employee(); 

    java.util.List<String> lines = java.nio.file.Files.readAllLines(Paths.get("newdata.txt"), StandardCharsets.UTF_8); 
    for(int i=2; i < lines.size(); i++){ 
     String[] splittedData = lines.get(i).split("; "); 
     employee1.setId(splittedData[0]); 
     employee1.setName(splittedData[1]); 
     employee1.setPosition(splittedData[2]); 
     employee1.setWage(Double.parseDouble(splittedData[3])); 
     employee1.setHoursWorked(Double.parseDouble(splittedData[4])); 
    } 
} 

NOTE: Je ne vais pas faire celui-ci, comme je ne sais pas si vous en avez besoin, mais l'implémentation remplacera les détails de employee1 si vous avez plusieurs lignes dans le newdata.txt. Vous pouvez ajouter un objet List<Employee> avant la boucle for et ajouter les nouveaux objets Employee à chaque itération.

+0

im obtenir des erreurs à 'lines.length' et' lines [i] .split ("; ")' – spider249

+0

J'ai modifié la réponse. Je n'ai pas mon ordinateur avec moi, donc je ne peux pas le vérifier, si ça ne marche plus, je vais le regarder une fois chez moi. – detus

0

d'abord vous devez lire le texte à partir du fichier et remplir votre classe avec des données réelles. Il y a plusieurs façons de le faire en Java. C'est à dire. vous pouvez créer un BufferedReadStream et lire le fichier ligne par ligne. Vous avez besoin de diviser chaque ligne en éléments, en utilisant ';'. comme vous l'avez décrit.

Certains éléments représenteront des valeurs de chaîne, comme des noms, d'autres nombres entiers et des valeurs doubles. Vous auriez besoin de convertir les chaînes en ces valeurs, en utilisant quelque chose comme Double.parseDouble (string).

Lorsque vous avez terminé, vous pouvez calculer ce dont vous avez besoin et imprimer les résultats.