Hallo,
ich habe ein paar Methoden programmiert, mit denen ich Daten aus einer Datei auslesen und diese dann auf Textfeldern ausgeben kann. Die Daten sollen auf verschiedene Textfelder ausgegeben werden; die einzelnen Datenteile sind mit einem Doppelpunkt voneinander getrennt:
Die Daten in einer Zeile bilden einen Datensatz. Allerdings funktioniert das ganze noch nicht richtig:
[highlight=Java]
public final int DATA_VALUES = 9;
public int index = 1;
/* Returns the user information */
public int giveBack = 0;
private String[][] savedData;
private String[] data = new String[DATA_VALUES];
public String[] dataBack = new String[DATA_VALUES];
private File file = new File("./data", "data.csv");
public boolean readData() {
try {
BufferedReader bufferedReader = new BufferedReader(new FileReader(file));
try {
String row ="";
String column = "";
int rowNumber = 0;
while((row = bufferedReader.readLine()) != null) {
column += row + "\n";
++rowNumber;
}
String[] rowArray = new String[rowNumber];
rowArray = column.split("\n");
savedData = new String[rowNumber][DATA_VALUES];
for (int i = 0; i < rowNumber; i++) {
//Search for the first occurrence of a character or substring
if (rowArray.indexOf(":") > -1) {
savedData = rowArray.split(":");
}
}
bufferedReader.close();
} catch (IOException e) {
System.out.println(e);
return false;
}
} catch (FileNotFoundException e) {
System.out.println(e);
savedData = new String[0][0];
return false;
}
return true;
}
public int getData() {
readData();
for (int i = 0; i < DATA_VALUES; i++) {
dataBack = "" + data;
}
return giveBack = 4;
}
[/highlight]
Die Methode, mit der die Daten eingelesen werden:[highlight=Java] public int setData(String forename, String name, String street, String number,
String zipcode, String city, String code, String telephone, String mobile) {
data[0] = forename;
data[1] = name;
data[2] = street;
data[3] = number;
data[4] = zipcode;
data[5] = city;
data[6] = code;
data[7] = telephone;
data[8] = mobile;
for (int i = 0; i < data.length; i++) {
if (data.equals("")) {
return giveBack = 1;
}
}
try {
BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(file, true));
String row = "";
for (int i = 0; i < data.length; i++) {
row += data + ":";
}
//Avoid, that a empty line will be created
if (!row.equals("")) {
row += "\n";
}
bufferedWriter.write(row, 0, row.length());
bufferedWriter.close();
dataAdministration.changeLabel();
} catch (IOException e) {
System.out.println(e);
}
return giveBack = 2;
}[/highlight]
Und die Methoden in einer übergeordneten Klasse, die die Daten vvn den TextFeldern holen und weider in sie schreiben soll:
[highlight=Java]
public void saveInputData() {
saveData.setData(
addressBookGUI.tfForename.getText(),
addressBookGUI.tfName.getText(),
addressBookGUI.tfStreet.getText(),
addressBookGUI.tfNumber.getText(),
addressBookGUI.tfZipcode.getText(),
addressBookGUI.tfCity.getText(),
addressBookGUI.tfCode.getText(),
addressBookGUI.tfTelephone.getText(),
addressBookGUI.tfMobile.getText());
addressBookGUI.tfIndex.setText("" + index);
changeLabel();
}
public void showDataOfIndex() {
saveData.getData();
addressBookGUI.tfForename.setText("" + saveData.dataBack[0]);
addressBookGUI.tfName.setText("" + saveData.dataBack[1]);
addressBookGUI.tfStreet.setText("" + saveData.dataBack[2]);
addressBookGUI.tfNumber.setText("" + saveData.dataBack[3]);
addressBookGUI.tfZipcode.setText("" + saveData.dataBack[4]);
addressBookGUI.tfCity.setText("" + saveData.dataBack[5]);
addressBookGUI.tfCode.setText("" + saveData.dataBack[6]);
addressBookGUI.tfTelephone.setText("" + saveData.dataBack[7]);
addressBookGUI.tfMobile.setText("" + saveData.dataBack[8]);
changeLabel();
}[/highlight]
Als Ausgabe bekomme ich immer nur "null" angezeigt - ich finde den Fehler aber einfach nicht.
ich habe ein paar Methoden programmiert, mit denen ich Daten aus einer Datei auslesen und diese dann auf Textfeldern ausgeben kann. Die Daten sollen auf verschiedene Textfelder ausgegeben werden; die einzelnen Datenteile sind mit einem Doppelpunkt voneinander getrennt:
Code:
test:test:test:test:test:test:test:test:test:
test:test:test:test:test:test:test:test:test:
test:test:test:test:test:test:test:test:test:
[highlight=Java]
public final int DATA_VALUES = 9;
public int index = 1;
/* Returns the user information */
public int giveBack = 0;
private String[][] savedData;
private String[] data = new String[DATA_VALUES];
public String[] dataBack = new String[DATA_VALUES];
private File file = new File("./data", "data.csv");
public boolean readData() {
try {
BufferedReader bufferedReader = new BufferedReader(new FileReader(file));
try {
String row ="";
String column = "";
int rowNumber = 0;
while((row = bufferedReader.readLine()) != null) {
column += row + "\n";
++rowNumber;
}
String[] rowArray = new String[rowNumber];
rowArray = column.split("\n");
savedData = new String[rowNumber][DATA_VALUES];
for (int i = 0; i < rowNumber; i++) {
//Search for the first occurrence of a character or substring
if (rowArray.indexOf(":") > -1) {
savedData = rowArray.split(":");
}
}
bufferedReader.close();
} catch (IOException e) {
System.out.println(e);
return false;
}
} catch (FileNotFoundException e) {
System.out.println(e);
savedData = new String[0][0];
return false;
}
return true;
}
public int getData() {
readData();
for (int i = 0; i < DATA_VALUES; i++) {
dataBack = "" + data;
}
return giveBack = 4;
}
[/highlight]
Die Methode, mit der die Daten eingelesen werden:[highlight=Java] public int setData(String forename, String name, String street, String number,
String zipcode, String city, String code, String telephone, String mobile) {
data[0] = forename;
data[1] = name;
data[2] = street;
data[3] = number;
data[4] = zipcode;
data[5] = city;
data[6] = code;
data[7] = telephone;
data[8] = mobile;
for (int i = 0; i < data.length; i++) {
if (data.equals("")) {
return giveBack = 1;
}
}
try {
BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(file, true));
String row = "";
for (int i = 0; i < data.length; i++) {
row += data + ":";
}
//Avoid, that a empty line will be created
if (!row.equals("")) {
row += "\n";
}
bufferedWriter.write(row, 0, row.length());
bufferedWriter.close();
dataAdministration.changeLabel();
} catch (IOException e) {
System.out.println(e);
}
return giveBack = 2;
}[/highlight]
Und die Methoden in einer übergeordneten Klasse, die die Daten vvn den TextFeldern holen und weider in sie schreiben soll:
[highlight=Java]
public void saveInputData() {
saveData.setData(
addressBookGUI.tfForename.getText(),
addressBookGUI.tfName.getText(),
addressBookGUI.tfStreet.getText(),
addressBookGUI.tfNumber.getText(),
addressBookGUI.tfZipcode.getText(),
addressBookGUI.tfCity.getText(),
addressBookGUI.tfCode.getText(),
addressBookGUI.tfTelephone.getText(),
addressBookGUI.tfMobile.getText());
addressBookGUI.tfIndex.setText("" + index);
changeLabel();
}
public void showDataOfIndex() {
saveData.getData();
addressBookGUI.tfForename.setText("" + saveData.dataBack[0]);
addressBookGUI.tfName.setText("" + saveData.dataBack[1]);
addressBookGUI.tfStreet.setText("" + saveData.dataBack[2]);
addressBookGUI.tfNumber.setText("" + saveData.dataBack[3]);
addressBookGUI.tfZipcode.setText("" + saveData.dataBack[4]);
addressBookGUI.tfCity.setText("" + saveData.dataBack[5]);
addressBookGUI.tfCode.setText("" + saveData.dataBack[6]);
addressBookGUI.tfTelephone.setText("" + saveData.dataBack[7]);
addressBookGUI.tfMobile.setText("" + saveData.dataBack[8]);
changeLabel();
}[/highlight]
Als Ausgabe bekomme ich immer nur "null" angezeigt - ich finde den Fehler aber einfach nicht.
Zuletzt bearbeitet: