Leere Zeile lesen

guguli

Bekanntes Mitglied
Hallo zusammen,

Ich hab eine Methode, die eine txt datei liest und bestimmte Zeilen in einem Array speichert.
Bis dahin war auch kein Problem, nun hab ich eine zeiel die so aussieht:
iteration =

ich möchte diese zeile wie folgt speichern:
diese soll geteilt werden, "iteration" soll in einem array gespeichert werden und der rest ohne "=" in einem anderen Array.

Ich hab das bis jetzt so gelöst:
Java:
public static void speichern(){
	
		File file = new File("D:/eclipse/IKV/Example_Input.txt");
		String name;
		String[] value=null;
		BufferedReader in = null;
		
		try{
			in = new BufferedReader(new FileReader(file));
			String zeile = null;
			while((zeile=in.readLine())!= null)
			{
				if(!zeile.startsWith("#"))
				{
					if(zeile.startsWith("["))
					{
						name = zeile.substring(zeile.indexOf("["), zeile.indexOf("]"));
						parameterArray.add(name+blockTrennung);
						längeDerParameter++;
						
					}
					if(zeile.contains("="))
					{
						name = zeile.substring(zeile.indexOf(""), zeile.indexOf("="));
						parameterArray.add(name);
						
						value = zeile.split("=");
						valueArray.add(value[1]);
						längeDerParameter ++ ;
					}
				}
			}

		}catch (IOException e){
			e.printStackTrace();
		}finally {
			if(in!=null)
				try{
					in.close();
				}catch (IOException e){
					
				}
		}
	}

Meine frage: kann ich in einem Array ein leeres Zeichen einfügen, also so was : [q,w,e, , w]
wenn ja wie, denn ich kriege diese fehlermeldung:
java.lang.ArrayIndexOutOfBoundsException

und wenn es nicht geht wie kann ich, dann an diese stelle 000 einfügen??? und dann diese in das Array speichern????


THX
 
natürlich kann in einem Array auch ein leerer Strig stehen. es ist die frage ob du einen leeren String möchtest ("") oder ein "leeres" arrayfeld. an dieser Stelle kannst du auch einen null Verweis drin haben, musst halt aufpassen dass nirgents eine NullPointerException fliegt. Du kannst auch einen standart String reinschreiben wie z.B. "-" der dir signalisirt, das hier nichts drin ist.

wo bei deinem Programm, so wie du es geschrieben hast, die ArrayIndexOutOfBounds Exception fliegt ist mir nicht klar.

was du mit [q,w,e, , w] meinst ist mir auch leider nicht klar. Schreib doch einmal genau was du vorhast und was wo nicht geht daran
 
du kannst auch eine ArrayList<String> value =new ArrayList<>(); machen, dann bekommst einen "Array" der sich der länge deiner eingabewerte anpasst
 
Edit: War quatsch. Zu schnell gelesen.
Also: Wenn hinter deinem "="-Zeichen nichts steht, schreibt Split auch nichts in den Array. Vielleicht fragst du mit length ab, ob da was drin ist oder so.

[STRIKE]Ja, du kannst einen leeren String speichern. Und ArrayIndexOutOf Bounds hat damit nix zu tun. Das Problem bei dir ist, dass du nichts in dme Array value gespeichert hast und auf value[1] zugreifen willst.[/STRIKE]
 
Zuletzt bearbeitet:
Hi, also dran hab ich auch überlegt, dass ich da was rein schreiben soll, also so was wie "_"... ABer wie kann ich das denn machen??
ICh will eine IF abfrage womit ich das überprüfen:
wenn da kein String vorhanden ist dann schreibe an der stelle in Array "---" sonst mache wie gewöhnt weiter..


THX
 
Java:
	@Test
	public void testNoString() {
		String[] splitString = splitString("iteration =");
		assertEquals("iteration", splitString[0]);
		assertEquals("---", splitString[1]);
	}

	@Test
	public void testSimpleString() {
		String[] splitString = splitString("iteration = 12");
		assertEquals("iteration", splitString[0]);
		assertEquals("12", splitString[1]);
	}

	public String[] splitString(String txt) {
		String[] result = new String[2];
		String[] split = txt.split("=");
		result[1] = "---";
		if (split.length > 0) result[0] = split[0].trim();
		if (split.length == 2) result[1] = split[1].trim();
		return result;
	}
 
Hi,

Ich hab versucht das Problem so zu lösen :
Java:
if(zeile.contains("="))
					{
						name = zeile.substring(zeile.indexOf(""), zeile.indexOf("="));
						parameterArray.add(name);
						
						value = zeile.split("=");
						
					    if(value[1].length() >= 0){
					    	 valueArray.add(value[1]);
					    }
					    else  valueArray.add("---");
						längeDerParameter ++ ;
						System.out.println(valueArray);
					}

aber ich krieg diese Fehlermedung:
java.lang.ArrayIndexOutOfBoundsException: 1 sobald ich in
Java:
valueArray.add("---");
rein gehe

Kann mir einer weiter helfen????


THX
 
Verwende einfach
Code:
zeile.split("=")
. Als Ergebnis bekommst du ein Array welches an die Teile enthält. Ist die Länge = 1 ... hast du nur vorne etwas stehen, ist die Länge = 2 hast du auch einen hinteren Teil den du gesondert in valueArray hinzuefügen kannst!

aber ich krieg diese Fehlermedung:
java.lang.ArrayIndexOutOfBoundsException: 1 sobald ich in
Java:
valueArray.add("---");
rein gehe

Wo genau kommt die Exception => StackTrace?
Code:
valueArray.add("---");
kann diese Exception normal nicht verursachen weil ein Array keine add Funtkion hat, somit muss "valueArray" einen anderen Typ haben.

[TIPP]
Vermeide Umlaute im Code! Und setze auch bei einzeiligen Codeblöcken (wie bei deinem else) Klammern.
[/TIPP]
 
Zuletzt bearbeitet:
Zeile 8 würde ich mal value.length>1 probieren. Ohne die Klammern. Auf value [1] kann man nämlich nicht zugreifen. Das meinte ich auch in meinem letzten Post schon.
 
ok ich hab das problem gefunden 🙂 aber noch nicht beheben könnte 🙁

Also das problem ist dass deise Zeile "iteration =" keine leerzeichen mehr nach = hat, sondern einen Zeilenumbruch. Die frage ist jetzt wie kann man einen Zeilenumbruch abfragen ?!?!? die zu lesende datei ist eine .txt


THX
 

Neue Themen


Zurück
Oben