2017-06-06 2 views
0

Ich bin neu in Java und habe versucht, zu testen, was ich gelernt habe, indem ich ein TestAddRemove-Programm erstellt habe. Im Wesentlichen soll es Sie dazu bringen, eines von zwei Arrays auszuwählen und Ihnen zu ermöglichen, einen Firmennamen hinzuzufügen, einen Firmennamen zu entfernen und zu lesen, ob sich eine Firma, die Sie suchen, in einem der Arrays befindet.Ich weiß nicht, wie man einen String zur Arraylist hinzufügt und ihn festhält

Mein Hauptproblem ist mit dem Hinzufügen zu den Arrays Teil. Jedes Mal, wenn ich ein Unternehmen hinzufüge, das die Klasse Add verwendet, funktioniert es, aber wenn ich die Arrays erneut überprüfe, sind die Arrays leer.

Hauptquestio n: Wie füge ich einen Firmennamen zu einem Array im Hauptprogramm hinzu und habe es dabei?

Hier ist mein Code:

public class TestAddRemove 
{ 
    static Scanner sc = new Scanner(System.in); 
    static ArrayList<String> fileOne = new ArrayList<String>(); 
    static ArrayList<String> fileTwo = new ArrayList<String>(); 
    : 
    : //Some other stuff 
    : 
    String tryAgain = "Y"; 
    String answer; 
    String fileAnswer; 

    System.out.println("Welcome to the company tester; this program tests whether the company" 
      + "you input is a company we already received donations from or a company we have" 
      + "spoken to already, but declined to donate."); 

    while (tryAgain.equalsIgnoreCase("Y")) 
    { 
     System.out.println("Do you want to test, add or remove a company name? "); 
     answer = sc.next(); 
     String companyName; 


     if (answer.equalsIgnoreCase("add")) 
     { 
      System.out.println("Which file do you want to add to?"); 
      fileAnswer = sc.next(); 

      if (fileAnswer.equalsIgnoreCase("fileOne")) 
      { 
       Add file = new Add(fileOne); 
       System.out.println("Enter the company name you want to add. "); 
       companyName = sc.next(); 

       file.addCompany(companyName); 
      } 
      else 
      { 
       Add file = new Add(fileTwo); 
       System.out.println("Enter the company name you want to add. "); 
       companyName = sc.next(); 

       file.addCompany(companyName); 
      } 

Der Rest des Codes ist für die entfernen und Testmethoden, die ich glaube, ich könnte verstehen, wenn ich verstehe, wie Company hinzuzufügen.

Hier ist die Klasse hinzufügen:

public class Add 
{ 
    Scanner sc = new Scanner(System.in); 
    ArrayList<String> file; 

    public Add(ArrayList<String> fileOne) 
    { 
     this.file = fileOne; 
    } 

    public void addCompany (String companyName) 
    { 

     file.add(companyName); 
    } 

    public ArrayList<String> getFile() 
    { 
     return file; 
    } 

} 

Jede Hilfe zu dieser wäre genial, vielen Dank und Jubel sein!

+0

Der angegebene Code scheint gut zu funktionieren. Haben Sie versucht, Breakpoints zu setzen und den Code zu debuggen? Wie führen Sie die Anwendung aus? Daten werden nicht zwischen mehreren Läufen beibehalten. –

+0

Es läuft gut das erste Mal, wenn ich es ausführen, sind alle Zeichenfolgen in den Arrays. Wenn ich das Programm jedoch erneut ausführe, sind die Strings, die ich zuvor in die Arrays eingegeben habe, nicht vorhanden. Die Anwendung soll Strings in den Arrays speichern. Und wenn ich das Programm erneut ausführe und dem Array weitere Zeichenfolgen hinzufüge, sollten alle zuvor eingegebenen Zeichenfolgen und die neu eingegebenen Zeichenfolgen vorhanden sein. – Mike95

+1

Wenn Sie das Programm ein zweites Mal ausführen, ist es völlig unbekannt, dass in früheren Läufen ein Zustand eingestellt wurde. Dort würden Sie eine Persistenzschicht wie eine Datenbank benötigen. Die Strings zur Laufzeit werden nur im Speicher der aktuellen JVM gespeichert und beim Herunterfahren des Containers verworfen. –

Antwort

3

Durch Ausführen einer Java-Anwendung wird ein neuer JVM-Container erstellt. Ein solcher Container verfügt über einen eigenen Speicher, in dem er den Status für Ihr Programm speichert. Wenn eine Anwendung beendet wird, fährt die JVM herunter und verwirft alle vorhandenen Status. Wenn Sie das Programm ein zweites Mal ausführen, wird es in einer anderen JVM ausgeführt, die keine vorherigen Läufe kennt.

In Bezug auf Ihr Problem, um auf die Liste der in einem vorherigen Lauf erstellten Unternehmen zuzugreifen, müssen Sie Ihrer Anwendung eine Art Persistenzschicht wie eine Datenbank oder eine Datei hinzufügen, in der Sie die Firmen speichern können.

Die einfachste Lösung wäre, die Liste in einer Textdatei zu speichern, in der jede Zeile für eine Firma steht, bevor die Anwendung beendet wird und die Datei beim Start der Anwendung erneut geladen wird.

+0

Okay, ich verstehe. So läuft das Programm ohne Rücksicht auf irgendwelche vorherigen Läufe. Danke Luciano, schätze die Antwort. – Mike95

Verwandte Themen