Array in Spalten angeben

chillerStudent

Bekanntes Mitglied
Java:
In.open("fivePoints.txt");
	
	double[] a;
	a= new double[5];
		
	
	for(int i=0; i<10; i++)
	{
		double v = In.readDouble();
		Out.println(v);
		
		Out.println();
		
		a[i]=In.readDouble();
		Out.println(a[i]);
	}

Hallo,

ich muss das a in einer anderen Spalte ausgben, sodass:

x-Koordinaten:
4.323378810163563
0.692942257399981
6.07836792051402
8.956672396946054
3.02658460021892

und

y-Koordinaten:
7.2753451415524175
0.23052983340252853
8.033930064917836
4.944743812499384
4.195128084444047

Muss ich da eine seperate for-schleife machen?
 
Dieser Code wird dir eine ArrayIndexOutOfBounds-Exception schmeißen, da du 10 Werte in ein Array packen willst, was du 5 Werte aufnehmen kann.
Du kannst entweder ein Array von 2dimensionalen Arrays machen, oder ein Array von Point's oder ein Array wo x und y aufeinander folgen, oder....
 
Sry wegen den Werten, hab da viel ausprobiert, daher diese unterschiedlichen Werte.
Und nochmal sorry, ich hab nichts verstanden was du geschrieben hast. Das Thema ist für mich ziemlich neu.
Was meinst du mit 2demensionalen Arrays?
 
Java:
double[][] werte = new double[5][];
double xwert = 22.0;
double ywert = 21.43;
werte[0] = new double[2];
werte[0][0] = xwert;
werte[0][1] = ywert;

sowas meinte ich. Ist aber nicht gerade schön.
 
Java:
double[][] werte = new double[5][];
double xwert = 22.0;
double ywert = 21.43;
werte[0] = new double[2];
werte[0][0] = xwert;
werte[0][1] = ywert;

sowas meinte ich. Ist aber nicht gerade schön.

sry, damit kann ich nichts anfangen. Kannst du mir vielleicht anders helfen? Das muss doch irgendwie einfacher gehen
 
Fang doch erstmal an, alle Werte in das Array einzulesen OHNE dass du die ausgibst.
Dannach gibst du zunächst alle geraden werte aus, dannach alle ungeraden.
 
Ist das einlesen so richtig?
Java:
double[] x= In.readDouble();
	double[] y= In.readDouble();
	
	x = new double[5];
	x[a]=In.readDouble();
	
	y = new double[5];
	y[b]=In.readDouble();
 
Java:
In.open("fivePoints.txt");
	
	double[] x;
	x= new double[5];
	
	double[] y;
	y= new double[5];
	
		
	
	for(int i=0; i<5; i++)
	{
		x = In.readDouble();
		y = In.readDouble();	
		
	}

Ich habe nur 5 zahlen, in der txt datei, die dieses Programm lesen soll, daher die 5 Elemente
 
Ok, du hast dich für die Lösung mit 2 Arrays entschieden.
Dann musst du auch die Zahl in die Arrays speichern, da müsste also irgendwas mit
Code:
x[i]=...
stehen
 
"jetzt" bezieht sich vermutlich auf den jetztigen Quellcode... Also könnte es vllt durch aus Sinn machen, diesen auch zu zeigen?
 
"jetzt" bezieht sich vermutlich auf den jetztigen Quellcode... Also könnte es vllt durch aus Sinn machen, diesen auch zu zeigen?

Java:
In.open("fivePoints.txt");
	
	double[] x;
	x= new double[5];
	
	double[] y;
	y= new double[5];
	
		
	
	for(int i=0; i<5; i++)
	{
		x[i] = In.readDouble();
		y[i] = In.readDouble();
		Out.println(x[i]);
		Out.println(" "+y[i]);
		
	}

	In.close();

Übrigens:
In der txt Datei stehen die Werte nebeneinander. Jetzt möchte ich Untereinander.
 
Funktioniert nicht.

Java:
double[] x;
	x= new double[5];
			
	
	for(int i=0; i<5; i++)
	{
		x[i] = In.readDouble();
		Out.println(x[i]);
		
		
	}

	double[] y;
	y= new double[5];
	
	for(int i=0; i<5; i++)
	{
		
		y[i] = In.readDouble();
		Out.println(" "+y[i]);
		
	}
 
Weil du wieder einließt und gleichzeitig ausgibst.
erst nur einlesen: OHNE println oder sonstwas da stehen zu haben
DANN ausgeben: OHNE readDouble da stehen zu haben.
 
Ich wiederhole mich gerne zum 5 Mal. Erst einlesen dann ausgeben.

x = In.readDouble(); <- das ist einlesen
Out.println(x); <- das ist ausgeben


Was du machen musst:

1. x und x Werten in die Arrays einlesen
2. x Werte ausgeben
3. y Werte ausgeben
 
Vielen Danke für eure Hilfe Leute, ich habe es hin bekommen :toll:
Java:
double[] x;
	x= new double[5];
	
	double[] y;
	y= new double[5];
	
	for(int i=0; i<5; i++)
	{
		x[i] = In.readDouble();
		y[i] = In.readDouble();
	}
		
	Out.println("x-Koordinaten");
	for(int i=0; i<5; i++)
	{		
		Out.println(x[i]);
	}
	
	Out.println("\n"+"y-Koordinaten");
	for(int i=0; i<5; i++)
	{		
		Out.println(+y[i]);
	}

Kann ich die letzten beiden for-schleifen nicht vereinfachen? Wenn ja, wie?
 
du könntest anstatt:

Code:
double[] y;
Code:
y= new double[5];

auch einfach

Code:
double[] y = new double[5];


Was willst du denn bei den Schleifen vereinfachen???
Ist doch nur einer Anweisung drin.
 
Was will man an den paar Zeilen noch vereinfachen?

Grundsätzlich sollte man, wenn man keinen Iterator o.ä. verwendet, die Abbruchbedinung über die Länge definieren.
Java:
for(int i=0; i<x.length; i++)       
    Out.println(x[i]);

Out.println("\n"+"y-Koordinaten");
for(int i=0; i<y.length; i++)
    Out.println(y[i]);
 
Dann verstehe ich meine Aufgabe nicht:
Das Programm soll aus einer txt Datei zahlen einlesen und ausgeben. Aber in der txt Datei können sich beliebig viele Zahlen drin stehen.
Wie soll ich dann folgendes Array mit beliebigen Elementen schreiben?
Java:
In.open("points.txt");
	
	double[] x;
	x= new double[10];

Andere Arrays darf ich nicht verwenden
 
wie wäre es das array so groß zu machn wie die geöffnete datei zeilen hat?

edit: wie man das "schön" umsetzt wird dir bei bedarf aber jemand anders sagen müssen.
 
Dann verstehe ich meine Aufgabe nicht:
Das Programm soll aus einer txt Datei zahlen einlesen und ausgeben. Aber in der txt Datei können sich beliebig viele Zahlen drin stehen.
Wie soll ich dann folgendes Array mit beliebigen Elementen schreiben?

Das ist unmöglich ... bei Arrays musst du von Anfang an wissen wieviele Werte du speichern willst.
Das ist ein Naturgesetz - äh die Definition von array.

Vom Mechanismus zu erkennen wann ein Array voll ist, einen neuen grösseren zu allozieren, den alten zu kopieren und wegzuwerfen und dann den zusätzlichen Inhalt anzuhängen verschone ich dich lieber.

Wie wärs mit Arrays der Grösse 1'000, 10'000 oder gar 100'000? Die dürften reichen, du musst so oder so mitzählen wieviele der Werte wirklich eingelesen wurden.

EDIT: Ok bones, auf die Idee wär ich echt nicht gekommen ;-) erst mal duchgehen und zählen, dann array allozieren, dann lesen. Tja noch einfacher gehts nur mit Vectoren o.ä. ;-)
 
Du könntest z.B. ein Anfangsarray des Größe 10 erzeugen und die Werte einlesen. Wenn das Array voll ist, erzeugst du ein Array das doppelt so groß ist, kopiert die Werte aus dem alten Array in das neue und ließt weitere Werte ein, usw...
 
Ok. Verstehe.
Wenn ich statt den Wert, zb oben 10, 100 eingebe und in der txt Datei 50 werte drin sind, dann gibt er die restlichen 50 Werte als 0.0 an.
Wie bekomme ich diese weg?
 
Wurde schon gesagt, zähl beim einlesen die zeilen mit du du gelesen hast und benutze dann nur die anzahl werte aus dem array.
 
Ok. Verstehe.
Wenn ich statt den Wert, zb oben 10, 100 eingebe und in der txt Datei 50 werte drin sind, dann gibt er die restlichen 50 Werte als 0.0 an.
Wie bekomme ich diese weg?

Wie wärs mit Lesen? Ich hab doch gesagt: Du musst MITZÄHLEN wieviele Werte gelesen wurden

und

JA dazu brauchst du möglicherweise eine spezielle Variable

Zur Erinnerung:
Wie wärs mit Arrays der Grösse 1'000, 10'000 oder gar 100'000? Die dürften reichen, du musst so oder so mitzählen wieviele der Werte wirklich eingelesen wurden.
 
if-schleife.de

Einfach beim einlesen hochzählen - wobei, wenn du ja genau weisst wieviel Werte du einliest ......


Ich kanns wirklich nicht mehr unterdrücken sonst dreh ich noch im roten Bereich - vor Inbetriebname der Tastatur Gehirn aktivieren
Ja ich weiss dass du Java-Anfänger bist, aber das hat nun wirklich nicht viel mit --- opps jetzt bin ich wieder der Böse :autsch:
 
Da Dir scheinbar das grundlegende Verständnis fürs Programmieren fehlt, würde ich das ganze mal per Hand und auf Papier versuchen nachzustellen.

Ansonsten: Wenn Du es Dir einfach machen willst, lese die Datei in einer ersten Schleife ein und zähle mit einer Zählvariablen einfach nur mit wieviel Zahlen darin enthalten sind - ohne die Zahlen in ein Array o.ä zu speichern.

Anhand der Zählvariablen weisst Du dann wie groß Deine Arrays sein müssen und kannst diese dementsprechend dimensionieren. Danach wie bisher Einlesen und Ausgeben.
Du benötigst also nur eine weitere Schleife und eine zusätzliche Variable vorab.

Übrigens if-Schleifen gibt es nicht ;-)
 
*kaffe rüberschieb*

pseudocode

Java:
int zähler = 0;
while (array[i] = textDatei.ZeileLesen() != 0.0) {
        zähler++;
}

for (i < zähler) {
    machWas(array[i]);
}
 

Zurück
Oben