Ich habe ein Programm mit einer Menge von JTextAreas, die vom Benutzer gefüllt werden. Ich speichere diese Kommentare mit einem BufferedWriter in einer .txt-Datei, getrennt durch ein Semikolon.Java NoSuchElementException mit Scanner auf leere Zeilen
Ich versuche, den Inhalt dieser .txt-Datei wieder in das Programm zu lesen, wo die Probleme beginnen. Ich benutze einen Scanner, um die Datei zu lesen, was perfekt für die ersten TextAreas funktioniert. Bei einem anderen Satz von JTextAreas schlägt es jedoch fehl, wenn nur Leerzeichen oder nichts in der Sicherungsdatei vorhanden sind. Ich verstehe nicht, warum es nur ein paar Zeilen vorher funktioniert.
openItem.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
JFileChooser oi = new JFileChooser();
oi.showOpenDialog(null);
Scanner scan = null;
try{
scan = new Scanner(oi.getSelectedFile());
scan.useDelimiter(Pattern.compile(";"));
String[] input = new String[144];
for (int i = 1; i<9;i++){ //This works fine, even with empty JTextAreas
input[i] = scan.next();
}
f1.setText(input[1]);
f2.setText(input[2]);
f3.setText(input[3]);
f4.setText(input[4]);
f5.setText(input[5]);
f6.setText(input[6]);
f7.setText(input[7]);
f8.setText(input[8]);
for(int i=1;i<13;i++){ //This throws a NoSuchElementException if it's reading a savefile with empty TextAreas
input[i] = scan.next();
}
c1.setText(input[1]);
c2.setText(input[2]);
c3.setText(input[3]);
c4.setText(input[4]);
....
}catch(IOException | NoSuchElementException i){
JOptionPane.showMessageDialog(null, "Error while reading", "Error",1);
}}});
Nun ist die zweite for-Schleife perfekt funktioniert, wenn die Sicherungsdatei einen Wert für jede JTextArea enthält, aber nicht, wenn es für eines der Elemente nur Leerzeichen ist. Was mache ich hier falsch?
Vielen Dank, das funktioniert! Nur zur Klarstellung: Was macht die Linie? Ich habe noch nie eine solche Syntax gesehen, aber es sieht wie eine if-Anweisung aus. – Lotec
@Lotec ja, es heißt ternärer Operator. Im Grunde genommen setzt man in den Klammern eine Bedingung wie eine if-Anweisung ohne das if. und wenn es wahr ist, wird der erste Wert zurückgegeben, andernfalls das Recht. Ähnlich wie sonst. –