Hi,
ich zerbreche mir schon den ganzen Tag den Kopf an der Read End Dead Fehlermeldung.
Schritte zum reproduzieren:
1. Im Menü die Option 6 wählen, danach nocheinmal.
2. Mit Option 1 Person aufnehmen, mit 2 abspeichern. Danach das Programm neu starten, mit Option 4 die Daten aus der .csv Datei einlesen. Anschließend erneut mit Option 1 eine Person aufnehmen, allerdings kommt jetzt nach Wahl der Option 2 die Fehlermeldung.
Was habe ich falsch gemacht?
Bitte nicht wundern wieso ich über die Pipe Objekte schieben will die ich vorher aus einer String-Matrix erstellt hab bzw. das Objekt wieder in eine Matrix umgewandelt habe.
Zum besseren Verständnis auch noch folgendes:
In myPerson[] wird immer jeweils eine Person gespeichert, und jede Person wird über die Funktion matrixBefuellen[][] einer Zeile in einer String-Matrix zugewiesen.
Der Code ist in 4 Klassen aufgeteilt, Model, View, Controller und Person (+StdInput).
Die Files einzeln: https://www.file-upload.net/gal-243345/czwak2/1.html
Ich wäre für jede Hilfe unglaublich dankbar!
import java.io.*;
import java.util.*;
public class View extends Thread{
static private boolean go_on = true;
static public int persCounter = 0;
static String myNewPerson[] = new String[9];
static String myPersons[][] = new String[10][9];
Person myPersonObjects[] = new Person[10];
//Hilfsgrössen/Hilfskonstanten
final static int NAME = 0;
final static int VORNAME = 1;
final static int ANREDE = 2;
final static int STRASSE = 3;
final static int PLZ = 4;
final static int ORT = 5;
final static int TELEFON = 6;
final static int FAX = 7;
final static int BEMERKUNG = 8;
PipedInputStream pi1;
PipedOutputStream po1;
public View (PipedInputStream pi1, PipedOutputStream po1)
{
this.pi1 = pi1;
this.po1 = po1;
}
public synchronized void run() {
while (go_on) {
main_menu(); //unsere Dialogschnittstelle
}
try {
po1.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
pi1.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void main_menu() {
int eingabe = 0;
System.out.println("Hier ist die View Klasse!" +persCounter +" " +Model.persCounter);
System.out.println(" FRIENDS - Kontaktverwaltung\n");
System.out.println("Wollen Sie...\n");
System.out.println(" eine neue Person aufnehmen: > 1");
System.out.println(" Records auflisten: > 2");
System.out.println(" Records in eine Datei sichern: > 3");
System.out.println(" Records aus einer Datei laden: > 4");
System.out.println(" Datei-Zeilen nummerieren: > 5");
System.out.println(" in-memory Records sortieren: > 6");
System.out.println(" das Programm verlassen: > 7");
eingabe = StdInput.readInt();
System.out.println("Die Antwort war: " + eingabe); //Testausgabe
try {
switch (eingabe) {
case 1:
personAufnehmen(); //Personendatensatz in myNewPerson[] aufnehmen
break; //uebertraegt die Daten aus myNewPerson[] nach myPersons[][]
case 2:
personenAuflisten();
break; //Personenrecords auf der Konsolen auflisten
case 3:
outstream();
po1.write(eingabe);
try {
this.sleep(2200);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
break; //Records in Datei sichern
case 4:
outstream();
po1.write(eingabe);
instream();
try {
this.sleep(1200);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
break; //Records aus Datei laden
case 5:
outstream();
po1.write(eingabe);
instream();
break; //Zeilen nummerieren
case 6:
outstream();
po1.write(eingabe);
break; //Datei löschen*/
case 7:
System.out.println("bye bye...");
System.exit(0);
;
break; //Programm beenden
}
if (eingabe > 7 || eingabe < 1) {
System.out.println("Bitte geben Sie eine Zahl zwischen 1-7 ein!");
}
} catch(IOException e) {
e.printStackTrace();
}
}
public void personAufnehmen(){
// Datensatz fuer eine Person in
// myNewPerson[] aufnehmen
// und in den Puffer myPersons[]
// uebernehmen
boolean ok = false; //steuert die folgende Schleife
boolean nochmal = false;
while (!ok) {
System.out.println("Bitte geben Sie die Personendaten ein.");
myNewPerson[0] = StdInput.readString("Name: ");
myNewPerson[1] = StdInput.readString("Vorname: ");
myNewPerson[2] = StdInput.readString("Anrede: ");
myNewPerson[3] = StdInput.readString("Stra" + "\u00DF" + "e: ");
myNewPerson[4] = StdInput.readString("PLZ: ");
myNewPerson[5] = StdInput.readString("Ort: ");
myNewPerson[6] = StdInput.readString("Telefon: ");
myNewPerson[7] = StdInput.readString("Fax: ");
myNewPerson[8] = StdInput.readString("Bemerkung: ");
ok = ((StdInput.readString("Stimmt´s? (J/N)")).toLowerCase()
.equals("j"));
}
nochmal = ((StdInput.readString("Noch eine Person aufnehmen? (J/N)"))
.toLowerCase().equals("j"));
for (int i = 0; i < myNewPerson.length; i++) {
myPersons[persCounter] = myNewPerson;
}
matrix_befuellen();
if (nochmal == true) {
personAufnehmen();
System.out.println("Dankeschön!");
}
}
private void matrix_befuellen() { // alle Zeilen von myPersons[][]
// fuellen
for (int i = 0; i < myNewPerson.length; i++) {
myPersons[persCounter] = myNewPerson;
}
persCounter++;
Model.persCounter++;
arrayToObject();
}
public void personenAuflisten(){
ObjectToArray();
// Personenrecords auf der
// Konsolen auflisten
System.out.println("Auflistung der vorhandenen Personen");
if (persCounter < 1) {
System.out.println(
"Es gibt keine Datensaetze zum ausgeben!");
}
for (int i = 0; i < persCounter; i++) {
System.out.println("Satznummer " + (i+1));
System.out.println("Name: " + myPersons[NAME]);
System.out.println("Vorname: " + myPersons[VORNAME]);
System.out.println("Anrede: " + myPersons[ANREDE]);
System.out
.println("Stra" + "\u00DF" + "e: "
+ myPersons[STRASSE]);
System.out.println("PLZ: " + myPersons[PLZ]);
System.out.println("Ort: " + myPersons[ORT]);
System.out.println("Telefon: " + myPersons[TELEFON]);
System.out.println("Fax: " + myPersons[FAX]);
System.out.println("Bemerkung: " + myPersons[BEMERKUNG]);
if (i + 1 < persCounter) {
System.out.println("Es gibt noch " + (persCounter - (i + 1))
+ " Datensatz/Datensaetze");
StdInput.readString("Weiter mit 'Enter'");
} else {
System.out.println("Dat war´s!");
StdInput.readString("Weiter mit 'Enter'");
}
}
}
public void arrayToObject() {
System.out.println("Hier ist ArrayToObjects - View");
for(int a = 0; a < myPersons.length; a++) {
Person p = new Person();
p.setName(myPersons[a][0]);
p.setVorname(myPersons[a][1]);
p.setAnrede(myPersons[a][2]);
p.setStrasse(myPersons[a][3]);
p.setPlz(myPersons[a][4]);
p.setOrt(myPersons[a][5]);
p.setTelefon(myPersons[a][6]);
p.setFax(myPersons[a][7]);
p.setBemerkung(myPersons[a][8]);
myPersonObjects[a] = p;
}
}
public void ObjectToArray() {
System.out.println("Hier ist ObjectsToArray - View");
for(int a = 0; a < persCounter; a++) {
myPersons[a][0] = myPersonObjects[a].getName();
myPersons[a][1] = myPersonObjects[a].getVorname();
myPersons[a][2] = myPersonObjects[a].getAnrede();
myPersons[a][3] = myPersonObjects[a].getStrasse();
myPersons[a][4] = myPersonObjects[a].getPlz();
myPersons[a][5] = myPersonObjects[a].getOrt();
myPersons[a][6] = myPersonObjects[a].getTelefon();
myPersons[a][7] = myPersonObjects[a].getFax();
myPersons[a][8] = myPersonObjects[a].getBemerkung();
}
}
public void outstream()
{
System.out.println("Hier ist Outstream - View");
try
{
ObjectOutputStream ou1 = new ObjectOutputStream(po1);
ou1.writeObject(myPersonObjects);
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
public void instream()
{
System.out.println("Hier ist Instream - View");
try
{
ObjectInputStream oi1 = new ObjectInputStream(pi1);
myPersonObjects = (Person[]) oi1.readObject();
persCounter = Model.persCounter;
} catch (IOException | ClassNotFoundException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
}
ich zerbreche mir schon den ganzen Tag den Kopf an der Read End Dead Fehlermeldung.
Schritte zum reproduzieren:
1. Im Menü die Option 6 wählen, danach nocheinmal.
2. Mit Option 1 Person aufnehmen, mit 2 abspeichern. Danach das Programm neu starten, mit Option 4 die Daten aus der .csv Datei einlesen. Anschließend erneut mit Option 1 eine Person aufnehmen, allerdings kommt jetzt nach Wahl der Option 2 die Fehlermeldung.
Was habe ich falsch gemacht?
Bitte nicht wundern wieso ich über die Pipe Objekte schieben will die ich vorher aus einer String-Matrix erstellt hab bzw. das Objekt wieder in eine Matrix umgewandelt habe.
Zum besseren Verständnis auch noch folgendes:
In myPerson[] wird immer jeweils eine Person gespeichert, und jede Person wird über die Funktion matrixBefuellen[][] einer Zeile in einer String-Matrix zugewiesen.
Der Code ist in 4 Klassen aufgeteilt, Model, View, Controller und Person (+StdInput).
Die Files einzeln: https://www.file-upload.net/gal-243345/czwak2/1.html
Ich wäre für jede Hilfe unglaublich dankbar!
Code:
import java.io.*;
public class Controller extends Thread
{
/**
* Erstellt ein Controler Objekt und startet auf dem den Thread
*
* @param args
*/
public static void main (String[] args)
{
Controller c1 = new Controller();
c1.start();
}
/**
* Verbindet die Pipes und startet den Model und View Thread
*
* @see java.lang.Thread#run()
*/
public synchronized void run()
{
PipedInputStream pi1 = new PipedInputStream();
PipedOutputStream po1 = new PipedOutputStream();
PipedInputStream pi2 = new PipedInputStream();
PipedOutputStream po2 = new PipedOutputStream();
try
{
pi1.connect(po2);
}
catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
try
{
pi2.connect(po1);
}
catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
View v1 = new View(pi1, po1);
Model m1 = new Model(pi2, po2);
boolean via = v1.isAlive();
boolean mia = m1.isAlive();
v1.start();
m1.start();
//wenn der view und model Thread beendet sind wird auch dieser beendet
while (mia != false || via != false){
}
this.interrupt();
}
}
import java.util.*;
public class View extends Thread{
static private boolean go_on = true;
static public int persCounter = 0;
static String myNewPerson[] = new String[9];
static String myPersons[][] = new String[10][9];
Person myPersonObjects[] = new Person[10];
//Hilfsgrössen/Hilfskonstanten
final static int NAME = 0;
final static int VORNAME = 1;
final static int ANREDE = 2;
final static int STRASSE = 3;
final static int PLZ = 4;
final static int ORT = 5;
final static int TELEFON = 6;
final static int FAX = 7;
final static int BEMERKUNG = 8;
PipedInputStream pi1;
PipedOutputStream po1;
public View (PipedInputStream pi1, PipedOutputStream po1)
{
this.pi1 = pi1;
this.po1 = po1;
}
public synchronized void run() {
while (go_on) {
main_menu(); //unsere Dialogschnittstelle
}
try {
po1.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
pi1.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void main_menu() {
int eingabe = 0;
System.out.println("Hier ist die View Klasse!" +persCounter +" " +Model.persCounter);
System.out.println(" FRIENDS - Kontaktverwaltung\n");
System.out.println("Wollen Sie...\n");
System.out.println(" eine neue Person aufnehmen: > 1");
System.out.println(" Records auflisten: > 2");
System.out.println(" Records in eine Datei sichern: > 3");
System.out.println(" Records aus einer Datei laden: > 4");
System.out.println(" Datei-Zeilen nummerieren: > 5");
System.out.println(" in-memory Records sortieren: > 6");
System.out.println(" das Programm verlassen: > 7");
eingabe = StdInput.readInt();
System.out.println("Die Antwort war: " + eingabe); //Testausgabe
try {
switch (eingabe) {
case 1:
personAufnehmen(); //Personendatensatz in myNewPerson[] aufnehmen
break; //uebertraegt die Daten aus myNewPerson[] nach myPersons[][]
case 2:
personenAuflisten();
break; //Personenrecords auf der Konsolen auflisten
case 3:
outstream();
po1.write(eingabe);
try {
this.sleep(2200);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
break; //Records in Datei sichern
case 4:
outstream();
po1.write(eingabe);
instream();
try {
this.sleep(1200);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
break; //Records aus Datei laden
case 5:
outstream();
po1.write(eingabe);
instream();
break; //Zeilen nummerieren
case 6:
outstream();
po1.write(eingabe);
break; //Datei löschen*/
case 7:
System.out.println("bye bye...");
System.exit(0);
;
break; //Programm beenden
}
if (eingabe > 7 || eingabe < 1) {
System.out.println("Bitte geben Sie eine Zahl zwischen 1-7 ein!");
}
} catch(IOException e) {
e.printStackTrace();
}
}
public void personAufnehmen(){
// Datensatz fuer eine Person in
// myNewPerson[] aufnehmen
// und in den Puffer myPersons[]
// uebernehmen
boolean ok = false; //steuert die folgende Schleife
boolean nochmal = false;
while (!ok) {
System.out.println("Bitte geben Sie die Personendaten ein.");
myNewPerson[0] = StdInput.readString("Name: ");
myNewPerson[1] = StdInput.readString("Vorname: ");
myNewPerson[2] = StdInput.readString("Anrede: ");
myNewPerson[3] = StdInput.readString("Stra" + "\u00DF" + "e: ");
myNewPerson[4] = StdInput.readString("PLZ: ");
myNewPerson[5] = StdInput.readString("Ort: ");
myNewPerson[6] = StdInput.readString("Telefon: ");
myNewPerson[7] = StdInput.readString("Fax: ");
myNewPerson[8] = StdInput.readString("Bemerkung: ");
ok = ((StdInput.readString("Stimmt´s? (J/N)")).toLowerCase()
.equals("j"));
}
nochmal = ((StdInput.readString("Noch eine Person aufnehmen? (J/N)"))
.toLowerCase().equals("j"));
for (int i = 0; i < myNewPerson.length; i++) {
myPersons[persCounter] = myNewPerson;
}
matrix_befuellen();
if (nochmal == true) {
personAufnehmen();
System.out.println("Dankeschön!");
}
}
private void matrix_befuellen() { // alle Zeilen von myPersons[][]
// fuellen
for (int i = 0; i < myNewPerson.length; i++) {
myPersons[persCounter] = myNewPerson;
}
persCounter++;
Model.persCounter++;
arrayToObject();
}
public void personenAuflisten(){
ObjectToArray();
// Personenrecords auf der
// Konsolen auflisten
System.out.println("Auflistung der vorhandenen Personen");
if (persCounter < 1) {
System.out.println(
"Es gibt keine Datensaetze zum ausgeben!");
}
for (int i = 0; i < persCounter; i++) {
System.out.println("Satznummer " + (i+1));
System.out.println("Name: " + myPersons[NAME]);
System.out.println("Vorname: " + myPersons[VORNAME]);
System.out.println("Anrede: " + myPersons[ANREDE]);
System.out
.println("Stra" + "\u00DF" + "e: "
+ myPersons[STRASSE]);
System.out.println("PLZ: " + myPersons[PLZ]);
System.out.println("Ort: " + myPersons[ORT]);
System.out.println("Telefon: " + myPersons[TELEFON]);
System.out.println("Fax: " + myPersons[FAX]);
System.out.println("Bemerkung: " + myPersons[BEMERKUNG]);
if (i + 1 < persCounter) {
System.out.println("Es gibt noch " + (persCounter - (i + 1))
+ " Datensatz/Datensaetze");
StdInput.readString("Weiter mit 'Enter'");
} else {
System.out.println("Dat war´s!");
StdInput.readString("Weiter mit 'Enter'");
}
}
}
public void arrayToObject() {
System.out.println("Hier ist ArrayToObjects - View");
for(int a = 0; a < myPersons.length; a++) {
Person p = new Person();
p.setName(myPersons[a][0]);
p.setVorname(myPersons[a][1]);
p.setAnrede(myPersons[a][2]);
p.setStrasse(myPersons[a][3]);
p.setPlz(myPersons[a][4]);
p.setOrt(myPersons[a][5]);
p.setTelefon(myPersons[a][6]);
p.setFax(myPersons[a][7]);
p.setBemerkung(myPersons[a][8]);
myPersonObjects[a] = p;
}
}
public void ObjectToArray() {
System.out.println("Hier ist ObjectsToArray - View");
for(int a = 0; a < persCounter; a++) {
myPersons[a][0] = myPersonObjects[a].getName();
myPersons[a][1] = myPersonObjects[a].getVorname();
myPersons[a][2] = myPersonObjects[a].getAnrede();
myPersons[a][3] = myPersonObjects[a].getStrasse();
myPersons[a][4] = myPersonObjects[a].getPlz();
myPersons[a][5] = myPersonObjects[a].getOrt();
myPersons[a][6] = myPersonObjects[a].getTelefon();
myPersons[a][7] = myPersonObjects[a].getFax();
myPersons[a][8] = myPersonObjects[a].getBemerkung();
}
}
public void outstream()
{
System.out.println("Hier ist Outstream - View");
try
{
ObjectOutputStream ou1 = new ObjectOutputStream(po1);
ou1.writeObject(myPersonObjects);
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
public void instream()
{
System.out.println("Hier ist Instream - View");
try
{
ObjectInputStream oi1 = new ObjectInputStream(pi1);
myPersonObjects = (Person[]) oi1.readObject();
persCounter = Model.persCounter;
} catch (IOException | ClassNotFoundException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
}
Code:
import java.io.*;
import java.util.Collections;
import java.util.Scanner;
public class Model extends Thread{
//zur Steuerung der while-Schleife in main()
static public int persCounter = 0; // zaehlt die erfassten Personen
//Puffer für erfassen der Personendaten
static String myNewPerson[] = new String[9];
//Puffer fuer die gesammelten Daten
static String myPersons[][] = new String[10][9];
Person myPersonObjects[] = new Person[10];
//Hilfsgrössen/Hilfskonstanten
final static int NAME = 0;
final static int VORNAME = 1;
final static int ANREDE = 2;
final static int STRASSE = 3;
final static int PLZ = 4;
final static int ORT = 5;
final static int TELEFON = 6;
final static int FAX = 7;
final static int BEMERKUNG = 8;
PipedInputStream pi2;
PipedOutputStream po2;
public Model (PipedInputStream pi2, PipedOutputStream po2)
{
this.pi2 = pi2;
this.po2 = po2;
}
public synchronized void run() {
int eingabe = 0;
try {
instream();
eingabe = pi2.read();
switch (eingabe) {
case 3:
personSpeichern();
break; //Records in Datei sichern
case 4:
dateiEinlesen();
break; //Records aus Datei laden
case 5:
zeilenNummerieren();
break; //Zeilen nummerieren
case 6:
recordsSortieren();
break; //Datei löschen
case 7:
System.out.println("bye bye...");
System.exit(0);
;
break; //Programm beenden
}
if (eingabe > 7 || eingabe < 1) {
System.out.println("Bitte geben Sie eine Zahl zwischen 1-7 ein!");
}
} catch(IOException e) {
e.printStackTrace();
}
}
private void personSpeichern() throws IOException { // Records in Datei sichern/ in die
// Datei schreiben
ObjectToArray();
System.out.println(myPersons[0][0]);
System.out.println("PersCounter Model: " +persCounter);
System.out.println("PersCounter View: " +View.persCounter);
//betriebsspezifische Lineoperator, / oder \, je nach Betriebssystem
final String NEWLINE = System.getProperty("line.separator");
System.out.println(" ...Personendatensaetze sichern...");
File f = new File("Adreli.csv");
FileWriter fw = new FileWriter(f, true);
try {
for (int i = 0; i < persCounter; i++) {// Schreib-Schleife
//System.out.println("persCounter = "+persCounter);
fw.append(myPersons[i][NAME]);
fw.append(";");
fw.append(myPersons[i][VORNAME]);
fw.append(";");
fw.append(myPersons[i][ANREDE]);
fw.append(";");
fw.append(myPersons[i][STRASSE]);
fw.append(";");
fw.append(myPersons[i][PLZ]);
fw.append(";");
fw.append(myPersons[i][ORT]);
fw.append(";");
fw.append(myPersons[i][TELEFON]);
fw.append(";");
fw.append(myPersons[i][FAX]);
fw.append(";");
fw.append(myPersons[i][BEMERKUNG]);
fw.append(NEWLINE);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
finally
{
try {
fw.flush();
fw.close();
}
catch(IOException e)
{
System.out.println("Fehler beim Schliessen des Filewriter");
e.printStackTrace();
}
}
System.out.println(
View.persCounter + " Personendatensaetze gesichert..." + NEWLINE);
}//end of funct_3()
/**
* 4 = Records aus der Datei personenDB.CSV einlesen in den Puffer
* myPersons[][] Die Datei wird zeilenweise gelesen, wobei die eingelesene
* Zeile zunaechst in das String-Array myNewPerson[] geschrieben wird.
* Dieser Zeilenpuffer wird mit der Methode split()
* (class RandomAccessFile)
* in Einzelfelder zerlegt. Einzelfelder sind durch ";" getrennt.
* Mit diesen
* Einzelfeldern wird dann der Gesamtpuffer myPersons[][]
* aufgebaut/gefuellt.
*/
private void dateiEinlesen() { //Records aus Datei laden
int zeile = 0; //Zeilen-Index fer unsere Puffermatrix myPersons[][]
Scanner einlesen = null; //leeres Scanner-Objekt
try {//Scanner-Objekt sc
einlesen = new Scanner(new File("Adreli.csv"));
} catch (FileNotFoundException e) {
System.out.println(
"Datei nicht gefunden! Wurde sie bereits angelegt?");
}
System.out.println("...Personendatensaetze einlesen");
try {
while (einlesen.hasNextLine()) //Pruefung, ob Zeile vorhanden?
{
String myLine = einlesen.nextLine(); //Zeile aus Datei holen
if (myLine == null)
break;
myNewPerson = myLine.split(";"); //myLine aufgeteilt
for (int i = 0; i < myNewPerson.length; i++) {
myPersons[zeile][i] = myNewPerson[i];
}
persCounter++;
zeile++; //Zeilenzaehler erhöhen
}
} catch (ArrayIndexOutOfBoundsException ex) {
System.out.println();
System.out.println(
"Es können nur nicht-nummerierte+"
+ "Dateien eingelesen werden!");
System.out.println();
}
System.out.println("Personendatensaetze eingelesen: "
+ (persCounter));
arrayToObject();
outstream();
} //end of funct_4()
private void zeilenNummerieren() throws IOException {
//betriebsspezifische Lineoperator, / oder \, je nach Betriebssystem
final String NEWLINE = System.getProperty("line.separator");
System.out.println(" ...Personendatensaetze sichern...");
File f = new File("Adreli.csv");
FileWriter fw = new FileWriter(f, true);
try {
for (int i = 0; i < View.persCounter; i++) {// Schreib-Schleife
//System.out.println("persCounter = "+persCounter);
fw.append((i + 1) + "." + ";");
fw.append(myPersons[i][NAME]);
fw.append(";");
fw.append(myPersons[i][VORNAME]);
fw.append(";");
fw.append(myPersons[i][ANREDE]);
fw.append(";");
fw.append(myPersons[i][STRASSE]);
fw.append(";");
fw.append(myPersons[i][PLZ]);
fw.append(";");
fw.append(myPersons[i][ORT]);
fw.append(";");
fw.append(myPersons[i][TELEFON]);
fw.append(";");
fw.append(myPersons[i][FAX]);
fw.append(";");
fw.append(myPersons[i][BEMERKUNG]);
fw.append(NEWLINE);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
finally
{
try {
fw.flush();
fw.close();
}
catch(IOException e)
{
System.out.println("Fehler beim Schliessen des Filewriter");
e.printStackTrace();
}
}
System.out.println(persCounter + " Zeilen nummeriert..."
+ NEWLINE);
} //end of funct_5()
private void recordsSortieren() {
System.out.println("Diese Funktion wird noch ausgebaut!");
outstream();
}//end of funct_6()
public void arrayToObject() {
System.out.println("Hier ist ArrayToObjects - Model");
for(int a = 0; a < persCounter; a++) {
Person p = new Person();
p.setName(myPersons[a][0]);
p.setVorname(myPersons[a][1]);
p.setAnrede(myPersons[a][2]);
p.setStrasse(myPersons[a][3]);
p.setPlz(myPersons[a][4]);
p.setOrt(myPersons[a][5]);
p.setTelefon(myPersons[a][6]);
p.setFax(myPersons[a][7]);
p.setBemerkung(myPersons[a][8]);
myPersonObjects[a] = p;
}
}
public void ObjectToArray() {
System.out.println("Hier ist ObjectsToArray - Model");
for(int a = 0; a < View.persCounter; a++) {
myPersons[a][0] = myPersonObjects[a].getName();
myPersons[a][1] = myPersonObjects[a].getVorname();
myPersons[a][2] = myPersonObjects[a].getAnrede();
myPersons[a][3] = myPersonObjects[a].getStrasse();
myPersons[a][4] = myPersonObjects[a].getPlz();
myPersons[a][5] = myPersonObjects[a].getOrt();
myPersons[a][6] = myPersonObjects[a].getTelefon();
myPersons[a][7] = myPersonObjects[a].getFax();
myPersons[a][8] = myPersonObjects[a].getBemerkung();
}
}
public void outstream()
{
System.out.println("Hier ist Outstream - Model");
try
{
ObjectOutputStream ou2 = new ObjectOutputStream(po2);
ou2.writeObject(myPersonObjects);
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
/**
* Erhaelt eine LinkedList durch einen ObjectInputStream
*/
public void instream()
{
System.out.println("Hier ist Instream - Model");
try
{
ObjectInputStream oi2 = new ObjectInputStream(pi2);
myPersonObjects = (Person[]) oi2.readObject();
System.out.println("Kommt rein ");
} catch (IOException | ClassNotFoundException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
}
Code:
public class Person implements java.io.Serializable{
private String _name;
private String _vorname;
private String _anrede;
private String _strasse;
private String _plz;
private String _ort;
private String _telefon;
private String _fax;
private String _bemerkung;
public void setName(String n) {
this._name = n;
}
public String getName() {
return this._name;
}
public void setVorname(String v) {
this._vorname = v;
}
public String getVorname() {
return this._vorname;
}
public void setAnrede(String a) {
this._anrede = a;
}
public String getAnrede() {
return this._anrede;
}
public void setStrasse(String s) {
this._strasse = s;
}
public String getStrasse() {
return this._strasse;
}
public void setPlz(String p) {
this._plz = p;
}
public String getPlz() {
return this._plz;
}
public void setOrt(String o) {
this._ort = o;
}
public String getOrt() {
return this._ort;
}
public void setTelefon(String t) {
this._telefon = t;
}
public String getTelefon() {
return this._telefon;
}
public void setFax(String f) {
this._fax = f;
}
public String getFax() {
return this._fax;
}
public void setBemerkung(String b) {
this._bemerkung = b;
}
public String getBemerkung() {
return this._bemerkung;
}
}
Code:
import java.io.*;
public class StdInput
{
public static double readDouble()
{
BufferedReader br;
String inputString;
double value = 0.0;
br = new BufferedReader(new InputStreamReader(System.in));
try
{
inputString = br.readLine();
value = Double.parseDouble(inputString);
}
catch(IOException _uh)
{
System.out.println("Lesefehler !");
}
catch(NumberFormatException ex)
{
System.out.println("Sie haben keinen double-Wert eingegeben !");
}
return value;
}
public static double readDouble(String value)
{
System.out.println(value);
return readDouble();
}
public static int readInt()
{
BufferedReader br;
String inputString;
int value = 0;
br = new BufferedReader(new InputStreamReader(System.in));
try
{
inputString = br.readLine();
value = Integer.parseInt(inputString);
}
catch(IOException _uh)
{
System.out.println("Lesefehler !");
}
catch(NumberFormatException ex)
{
System.out.println("Sie haben keinen int-Wert eingegeben !");
}
return value;
}
public static int readInt(String value)
{
System.out.println(value);
return readInt();
}
public static String readString()
{
BufferedReader br;
String inputString = "";
br = new BufferedReader(new InputStreamReader(System.in));
try
{
inputString = br.readLine();
}
catch(IOException _uh)
{
System.out.println("Lesefehler !");
}
return inputString;
}
public static String readString(String value)
{
System.out.println(value);
return readString();
}
}