Einige Java Fragen

Neue Frage »

Dunkit Auf diesen Beitrag antworten »
Einige Java Fragen
Hi.
Es geht mir im Prinzip darum, mit Java eine Datei mit einigen Zeilen, die jeweils ein paar 0 und 1 enthalten, einzulesen. Dann sollen die Zeilen in einem Array Q gespeichert werden und zwar die Zeilen mit i-Nullen an der Stelle Q[i].
Die Probleme:

1) Wie lese ich eine Datei (sagen wir import.txt) ein
2) Wie schreibe ich u.U. zwei Zeilen an ein und dieselbe Stelle im Array? Es kann ja passieren, dass ich zwei _Zeilen mit gleich vielen 0 einlesen muss.
3) Wie erkenne ich einen Zeilenumbruch? Muss ich einfach nach "\n" suchen?

Danke schonmal im Vorraus.
Calvin Auf diesen Beitrag antworten »
RE: Einige Java Fragen
Zitat:
Original von Dunkit
1) Wie lese ich eine Datei (sagen wir import.txt) ein


Beispiel Lesen/Schreiben für Textdatei

Zitat:

2) Wie schreibe ich u.U. zwei Zeilen an ein und dieselbe Stelle im Array? Es kann ja passieren, dass ich zwei _Zeilen mit gleich vielen 0 einlesen muss.


Das geht nicht so direkt. Entweder du speicherst die Zeilen in einem zusätzlichen Array oder wenn du flexibler sein willst, speichere sie in ArrayLists. Letztendlich hast du also ein Array voller ArrayLists
Zitat:

3) Wie erkenne ich einen Zeilenumbruch? Muss ich einfach nach "\n" suchen?


Kannst du beim Einlesen vernachlässigen (siehe obigen Link)
Dunkit Auf diesen Beitrag antworten »

Habe da ein kleines Prob:

Ich habe

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
public void Einlesen(String eingabeDatei){
Vector input = new Vector();
...
}

public void main(){
Einlesen("input.txt");
n = Einlesen.input.get(0);
}


So und obwohl ich dem Vektor input noch ein paar Werte zuweise in Einlesen, bekomme ich bei n = Einlesen.input.get(0); ein "Einlesen cannot be resolved". Verstehe jetzt gerade nicht so ganz, warum?!
Calvin Auf diesen Beitrag antworten »

Ist "Einlesen" eine Klasse oder eine Methode? Oder der Konstruktor der Klasse "Einlesen"?

Ich habe leider gerade keine Java/Eclipse-Installation zur Hand, um ein kleines Beispiel zu machen.
Dunkit Auf diesen Beitrag antworten »

Einlesen ist eine Methode, die jetzt die einzelnen zeilen der datei input.tyt in einen Vektor schreiben soll
Calvin Auf diesen Beitrag antworten »

Dann kannst du nicht auf diesem Weg auf "Vector input" zugreifen, da dieser nur innerhalb der Methode "Einlesen" gültig ist.

Du könntest aber z.B. den Vector in der main-Methode anlegen und als Parameter an die Funktion übergeben

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
public void Einlesen(String eingabeDatei, Vector input){
...
}

public void main(){
Vector input = new Vector();
Einlesen("input.txt", input);
n = input.get(0);
}


Oder du nimmst Vector als private-Eigenschaft der Klasse (ganz oben)
 
 
Dunkit Auf diesen Beitrag antworten »

Hier ich habe jetzt folgendes zusammen:

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
import java.util.*;
import java.io.*;

public class Implikanten {
	private Vector Q[];
	private static Vector input = new Vector();
	public static int n;
	
	public static void main(String[] arguments){
		//String datei = arguments[0];
		
		Implikanten implikanten = new Implikanten();
		implikanten.Einlesen("input.txt");
		
		System.out.println(input.get(0));
	}	
	
	//public void AddMinterm(int n, String s){
	//	
	//}
	
	public void Einlesen(String eingabeDatei){
		
		String s;
		
		try {
		      BufferedReader in = new BufferedReader(
		                          new InputStreamReader(
		                          new FileInputStream( eingabeDatei ) ) );
		      while( null != (s = in.readLine()) ) {
		        input.add( s );
		      }
		      in.close();
		    } catch( FileNotFoundException ex ) {
		    } catch( Exception ex ) {
		      System.out.println( ex );
		    }
	}
	
	public void Ausgabe(){
		int i;
		for(i=0; i < Q.length; i++){
			System.out.println(Q[i]);
		}
	}

	              
}


Aber das System.out.println(input.get(0)); funktioniert nicht -> "Source not found" ?!
Dunkit Auf diesen Beitrag antworten »

Das Problem von gestern ist gelöst aber jetzt folgendes:

Also ich habs fast fertig, aber ein Problem gibts noch:

Ich habe

code:
1:
2:
3:
4:
public class Implikanten {
	private Vector Q[];


später wird das Array dann initialisiert mit

code:
1:
2:
3:
implikanten.Q = new Vector[implikanten.n+1];


Wenn ich dann versuche, in

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
	public void AddMinterm(int n, String s){
		int counter=0;
		
		for (int i=0; i<n; i++){
			if (s.charAt(i) == '0'){
				counter++;
			}
		}
		Q[counter].add(s);
	}



Das bringt mir aber nurr einen NullPointerException in Zeile 9 unglücklich

Woher kommt das?
papahuhn Auf diesen Beitrag antworten »

Du hast nur ein Array Q aus Vector'en, aber die einzelnen Felder sind leer. Du musst diese noch füllen.
Dunkit Auf diesen Beitrag antworten »

Und wie bzw womit fülle ich die sinnvoller weise?
Dunkit Auf diesen Beitrag antworten »

Danke, schon gelöst =)

//EDIT: Nach Abgabeschluss für die Aufgabe werde ich dann das vollst. Programm hier auch reinstellen ;-)
Neue Frage »
Antworten »



Verwandte Themen

Die Beliebtesten »
Die Größten »
Die Neuesten »