Methoden Speichern als Datei (.csv) | "update" Arraylist - Probleme

TrueShia

Mitglied
Bevor man postet, sollte man sich an ein paar Richtlinien halten!
Bevor du postest könntest du noch bei google anfragen.
Viele Fragen werden auch in den FAQ's beantwortet!
Ist weder bei google noch in den FAQ's was anzutreffen, so benutze die Forensuche.
Bei kleineren Problemen kann man auch ruhig im Chat (irc.phat-net.de/java-forum.net) fragen!
Wenn wirklich nirgends etwas zu finden ist, kannst du deine Frage ruhig stellen, aber vergiß die Netiquette (Netiquette#2) nicht!
Verwende aussagekräftige Titel und poste dein Thema im jeweiligen Unterforum.
Es hilft uns nichts wenn du sagst du hast eine Exception oder sonstigen Fehler, du aber weder den Fehler postest, noch Code (wir können nicht hellsehen).
Informationen über deinen Compiler, IDE und Betriebssystem sind auch hilfreich (bei UnsatisfiedLinkError überhaupt).
Wenn du auf dein Problem alleine draufgekommen bist, so poste bitte die Lösung, sodaß andere aus deinen Fehlern lernen können.

Regeln gelesen und beachtet.

Hier mein Code vorab
Java:
public class Masterkey{
  String password;
  int length;
  
  public Masterkey(String password, int length) {
    this.password = password;
    this.length = length;
  }
  
  public int getLength() {
    return length;
  }
  public void setLength(int length) {
    this.length = length;
  }
  public String getPassword() {
    return password;
  }
  public void setPassword(String password) {
    this.password = password;
  }
}

Java:
public class Data{
  String website;
  String username;
  String password;
  
  public Data(String website, String username, String password) {
    this.website = website;
    this.username = username;
    this.password = password;
  }
  
  public String getWebsite() {
    return website;
  }
  public void setWebsite(String website) {
    this.website = website;
  }
  public String getUsername() {
    return username;
  }
  public void setUsername(String username) {
    this.username = username;
  }
  public String getPassword() {
    return password;
  }
  public void setPassword(String password) {
    this.password = password;
  }
  
}

Java:
import java.util.ArrayList;

public class PasswordManagement{
  
  private ArrayList<Data> data;
  private ArrayList<Masterkey> masterkey;
  
  public PasswordManagement() {
    data = new ArrayList<Data>();
    masterkey = new ArrayList<Masterkey>();
  }

//Methodes for adding
  public void addUser(String website, String username, String password){
    data.add(new Data(website, username, password));
  }
  public void addMasterkey(String password, int length){
        masterkey.add(new Masterkey(password, length));
    }

//Methode for showing the values
  public String showData(){
      String s = "ID\t\t\tWebsite\t\t\tUsername\t\t\tPassword";

      for(Data u : data){
      s = s + "\n" + data.indexOf(u)+ "\t\t\t" + u.getWebsite() + "\t\t\t" + u.getUsername() + "\t\t\t" + u.getPassword();
      }
    return s;
  }

//Methodes for searching after values
  public Data sucheUsername(String username){
    for(Data a : data){
        if(username.equals(a.getUsername())){
            return a;
        }
    }
    return null;
  }
  public Data sucheWebsite(String website){
        for(Data a : data){
            if(website.equals(a.getWebsite())){
                return a;
            }
        }
        return null;
  }

//Methode for getting the index
  public int getIndexByUsername(String username)
    {
        for(Data a : data)
        {
            if(a.getUsername().equals(username))
                return data.indexOf(a);
        }
        return -1;
    }

//Methode for removing the selected index
  public void removeData(int index){
      data.remove(index);
  }

// Methodes for updating the selected values
  private void updateMasterkey(int index,Masterkey password) {
        masterkey.set(index, password);
    }

  private void updateUsername(int index, Data username){
      data.set(index, username);
  }

  private void updateWebsite(int index, Data website){
      data.set(index, website);
  }

  private void updatePassword(int index, Data password){
      data.set(index, password);
  }
}

Java:
import java.io.*;
import java.nio.charset.Charset;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Scanner;

public class PasswordManagementUI {
    public static void main(String[] args) throws IOException {
        PasswordManagement      m                   =      new PasswordManagement();
        Scanner                 scanner             =      new Scanner(System.in);
        int                     i;
        String                  inputWebsite, inputUsername, inputPassword = null;
        String                  order;
        String                  leftAlignFormat     =      "| %-15s | %-4d |%n";
        String                  fileName            =      "settings.txt";
        String                  output              =      "output.txt";
        boolean line;

        //Titel
        System.out.printf("Version 0.1:\n");
        System.out.format("+----------------------------------++----------------------------------+%n");
        System.out.printf("| Passwordmanagement by  |%n");
        System.out.format("+----------------------------------++----------------------------------+%n");


        try{
            FileReader filereader =  new FileReader(fileName);
            BufferedReader bufferedReader = new BufferedReader(filereader);
            while(line = bufferedReader.readLine() != null) {
                System.out.println(line);
            }
            bufferedReader.close();
        }
        catch(FileNotFoundException ex) {
            System.out.println("Unable to open file '" + fileName + "'");
        }
        catch(IOException ex) {
            System.out.println("Error reading file '" + fileName + "'");
        }

        do {
            //Spacer
            System.out.println();
            System.out.println();
            System.out.println();

            //Auflistung der Befehle
            System.out.println("Pick on of these commands:");
            System.out.println("        - list      // listing the current saved passwords");
            System.out.println("        - add       // adding a password");
            System.out.println("        - update    // updating a password");
            System.out.println("        - remove    // removing a password");
            System.out.println("        - cancel    // closing the application");
            System.out.println("        - save      // saving the actual state");

            //Abfrage nach Befehl
            System.out.format("+-------------------------+%n");
            System.out.printf("| What do you want to do? |%n");
            System.out.format("+-------------------------+%n");
            System.out.format("Insert: ");
            order = scanner.next();

            //IF - Befehleingabe
            if(order.equals("list")) {
                System.out.println("'list' is being initialized...");
                System.out.println(m.showData());
            }

            if (order.equals("add")) {
                System.out.println("'add' is being initialized...");
                System.out.print("Website? = ");
                inputWebsite = scanner.next();
                System.out.print("\nUsername? = ");
                inputUsername = scanner.next();
                System.out.print("\nPassword? = ");
                inputPassword = scanner.next();
                m.addUser(inputWebsite, inputUsername, inputPassword);
            }

            if (order.equals("update")) {
                System.out.println("'update' is being initialized...");
            }

            if(order.equals("remove")) {
                System.out.println("'remove' is being initialized...");
                System.out.println("What is the Index?: ");
                i = scanner.nextInt();
                m.removeData(i);
            }

            if (order.equals("cancel" )) {
                System.out.println();
                System.out.println("<3<3<3<3<3<3<3<3<3<3<3<3");
                System.out.println("Thank you for using me ;)");
                System.out.println("<3<3<3<3<3<3<3<3<3<3<3<3");
            }

            List<String> list = new ArrayList<>();
            String[] array = list.toArray(new String[] {});

        } while (!order.equals("cancel"));
    }
}

Probleme (bekannte)
1. "update" (unter PasswordmanagementUI und Passwordmanagement) funktioniert nicht.
2. Speicherung und Lesen von einer "output" Datei fehlt. (BufferedReader versucht.. aber dann stimmt die Formatierung nicht)

Würde mich über Tipps freuen und wäre auch super dankbar :oops:
Ich programmiere erst seit kurzem (merkt man wohl *hust*) will mich nur auf die Ausbildung vorbereiten. Habe bereits "Java ist auch eine Insel" sowie "Programmieren lernen mit Java" gelesen... nur blicke ich nicht durch sobald ich selbst programmiere
 
Zuletzt bearbeitet:

Thallius

Top Contributor
"Funktioniert nicht" ist keine Fehlermeldung. Deinen kompletten Code zu posten auch. Erkläre uns was genau nicht funktioniert oder was passiert und was eigentlich passieren sollte. Deinen ganzen Code durchzulesen und zu verstehen werden wohl nur wenige Lust zu haben.

Gruß

Claus
 

TrueShia

Mitglied
Sry :shock:

Zu dem Problem mit "update": Wenn ich z.B. updateUsername nutzen möchte nimmt er nur Data an aber ich möchte ein String nutzen. Egal wo und wie ich es änder es meckert rum das es nicht geht. Wenn ich unter "Passwordmanagement" updateUsername so ändere das statt "Data" ein "String" steht (also public void updateUsername(index, String username) kriege ich folgende Meldung
Error:(71, 11) java: no suitable method found for set(int,java.lang.String)
method java.util.List.set(int,Data) is not applicable
(argument mismatch; java.lang.String cannot be converted to Data)
method java.util.AbstractList.set(int,Data) is not applicable
(argument mismatch; java.lang.String cannot be converted to Data)
method java.util.ArrayList.set(int,Data) is not applicable
(argument mismatch; java.lang.String cannot be converted to Data)

zur Speicherung und Lesen von einer Datei.. ich habe keine Ahnung wie ich das überhaupt mache D: kenne nur BufferedReader und die anderen funktionieren überhaupt nicht (Da müsste ich vermutlich komplett mein Programm umschreiben)
 

TrueShia

Mitglied
(kann glaube mein Post nicht mehr editieren..)

Update habe ich gefixt :)

Jetzt ist das Problem nur noch das Speichern als Datei... da habe ich jetzt FileOutputStream ausprobiert aber das will auch nicht so wirklich.

Könnte mir jemand vielleicht sagen was ich am besten verwenden sollte um den Inhalt der Arraylist in Tabellenformat abzuspeichern :/?
 

Neue Themen


Oben