Как заставить файл CSV принимать более одного пользователя? - PullRequest
0 голосов
/ 13 октября 2019

Я успешно создал CSV-файл из данных, которые я ввел в текстовые поля, но проблема в том, что он будет принимать только один пользователь. Я знаю, что проблема в том, что я не сделал свой метод записи статическим, но я не могу найти способ перенести данные, хранящиеся в переменной, в файл csv, не делая не статичным.

public class newUserController {

        //private ResourceBundle resources;
        public Button continues;
        public Button save;

        public TextField tf_username;
        public PasswordField pf_password;
        public TextField tf_name;
        public ComboBox<?> dd_selectGender;
        public TextField tf_email;
        public TextField tf_age;
        public TextField tf_height;
        public ComboBox<?> dd_measurment;


        public void savePressed(ActionEvent event) throws IOException{
            String username = tf_username.getText();
            String password = pf_password.getText();
            String name = tf_name.getText();
            String gender = (String) dd_selectGender.getValue();
            String email = tf_email.getText();
            String age =tf_age.getText();
            String height=tf_height.getText();
            String measurment = (String) dd_measurment.getValue();
            CSVBuilder csv = new CSVBuilder(username,password,name,gender,email,age,height,measurment);


        }


        public void continuePressed(ActionEvent event) throws IOException{
            Parent menu = FXMLLoader.load(getClass().getResource("Menu Overview.fxml"));
            Scene menuScene = new Scene(menu);

            Stage window =(Stage)((Node)event.getSource()).getScene().getWindow();

            window.setScene(menuScene);
            window.show();
        }



}
public class CSVBuilder {

     String username;
     String password;
     String name;
     String gender;
     String email;
     String age;
     String height;
     String measurement;

    CSVBuilder(String user, String pass, String nam, String gen, String e_mail, String ag, String hei, String measur){
        username = user;
        password = pass;
        name = nam;
        gender = gen;
        email = e_mail;
        age = ag;
        height = hei;
        measurement = measur;
        String filePath = "C:\\Users\\vargh\\eclipse-workspace\\Java\\FitLog.csv";
        writeCsv(filePath);
    }

    //technically should be static
    public void writeCsv(String filePath) {
        //create demo Users
        List<User> users= new ArrayList<User>();
        User user = new User(username,password,name,gender,email,age,height,measurement);
        users.add(user);

        FileWriter fileWriter = null;
        try {
            fileWriter = new FileWriter(filePath);         

            fileWriter.append("Username, Password, Name, Gender, E-Mail, Age, Height, Measurement\n");

            for(User u: users) {
            fileWriter.append(String.valueOf(u.getUsername()));
            fileWriter.append(",");
            fileWriter.append(u.getPassword());
            fileWriter.append(",");
            fileWriter.append(u.getName());
            fileWriter.append(",");
            fileWriter.append(u.getGender());
            fileWriter.append(",");
            fileWriter.append(u.getEmail());
            fileWriter.append(",");
            fileWriter.append(u.getAge());
            fileWriter.append(",");
            fileWriter.append(u.getHeight());
            fileWriter.append(","); 
            fileWriter.append(u.getMeasurement());
            fileWriter.append("\n"); 
           }
        } catch (Exception ex) {
           ex.printStackTrace();
        } finally {
            try {
                fileWriter.flush();
                fileWriter.close();
           }catch (Exception e) {
               e.printStackTrace();
           }
        }
    }
}
public class User {
    String username;
    String password;
    String name;
    String gender;
    String email;
    String age;
    String height;
    String measurement;
    User(String user, String pass, String nam, String gen, String e_mail, String ag, String hei, String measur){
        username = user;
        password = pass;
        name = nam;
        gender = gen;
        email = e_mail;
        age = ag;
        height = hei;
        measurement = measur;
    }

    public String getUsername() {
        return username;
    }
    public String getPassword() {
        return password;
    }
    public String getName() {
        return name;
    }
    public String getGender() {
        return gender;
    }
    public String getEmail() {
        return email;
    }
    public String getAge() {
        return age;
    }
    public String getHeight() {
        return height;
    }
    public String getMeasurement() {
        return measurement;
    }

}

1 Ответ

1 голос
/ 13 октября 2019

Вы добавляете только 1 пользователя, верно?

        List<User> users= new ArrayList<User>();
        User user = new User(username,password,name,gender,email,age,height,measurement);
        users.add(user);

Кроме того, обратили бы внимание на:

CSVBuilder csv = new CSVBuilder(username,password,name,gender,email,age,height,measurment);

Было бы предложено преобразовать это вList из Users как таковой:

    CSVBuilder(List<User> users){
        this.users = users;
    }

и затем вы можете вызвать его с помощью чего-то вроде:

        List<User> users= new ArrayList<>();
        User user = new User("username-1","password-1","alice","f","email@xyz.com","20","","");
        users.add(user);
        User user2 = new User("username-2","password-2","bob","m","email@abc.com","21","","");
        users.add(user2);
        CSVBuilder csvBuilder = new CSVBuilder(users);
        csvBuilder.writeCsv("FitLog.csv");

Создание вывода:

Username, Password, Name, Gender, E-Mail, Age, Height, Measurement
username-1,password-1,alice,f,email@xyz.com,20,,
username-2,password-2,bob,m,email@abc.com,21,,

Также предложил бы FileWriter(File, boolean), поскольку кажется, что вы, возможно, пытаетесь добавить файл с новым пользователем / кликом. Опция по умолчанию не добавляется, но перезаписывается.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...