Array werte zusammenrechnen

Spin

Top Contributor
Hallo liebe Java Community,

ich habe eine einfache Frage, in der mir villeicht der eine oder andere helfen kann :)

Ich habe ein Array in dem folgende tausende Werte stehen.

Array: 15 , 14 , 13 , -1 , -1 , -1 , -1 , -1 , 22, 33 , 15, -1, -1, -1, 66, 32, -1 ,-1

...

So stehen die Werte im Array.
Nun möchte ich gerne alle Werte jeweils einzelnd zusammen rechnen und durch die Anzahl rechnen.

Das heißt:

1. Durchsuche Array
2. Solange die Werte ungleich -1 sind in Result aufaddieren
3. Result durch Anzahl dividieren

Result: 15 , 14 , 13 und rechne durch Anzahl (3).

4. Nimm das Result und speicher es in ein Textfile.

Ist das getan , dann wieder in die schleife und suche nach den nächsten werten.

Aber ich komme einfach nicht zum Ziel:
Java:
int l =0;
				while(arrayT[l] != -1){
					value += arrayT[l];
					l++;
				}
				double sum = (value/count);
				text.append(i + ";" + df.format(sum) + "; \n");
				// goto while

Hatte es schon mit verschalteten While vericht , aber das geht auch net so richtig , danke für denkanstöße :)
 

VfL_Freak

Top Contributor
Moin,

ich habe eine einfache Frage, in der mir villeicht der eine oder andere helfen kann :)
Ich habe ein Array in dem folgende tausende Werte stehen.
Array: 15 , 14 , 13 , -1 , -1 , -1 , -1 , -1 , 22, 33 , 15, -1, -1, -1, 66, 32, -1 ,-1
...

So stehen die Werte im Array.
Nun möchte ich gerne alle Werte jeweils einzelnd zusammen rechnen und durch die Anzahl rechnen.

Das heißt:

1. Durchsuche Array
2. Solange die Werte ungleich -1 sind in Result aufaddieren
3. Result durch Anzahl dividieren

Result: 15 , 14 , 13 und rechne durch Anzahl (3).

4. Nimm das Result und speicher es in ein Textfile.

Ist das getan , dann wieder in die schleife und suche nach den nächsten werten.

Aber ich komme einfach nicht zum Ziel:
Java:
int l =0;
				while(arrayT[l] != -1){
					value += arrayT[l];
					l++;
				}
				double sum = (value/count);
				text.append(i + ";" + df.format(sum) + "; \n");
				// goto while

Wo genau ist Dein Problem ?

Irgendwie ist die Bedingung Deiner while-Schleife unschön ...
Was soll passieren, wenn kein -1 vorkommt ???:L

Wie (und wo) sind value und count deklariert ???:L

Gruß
Klaus
 
G

Gast2

Gast
Java:
double value = 0.0;
int count = 0;
for(int j : arrayT){
    if(j != -1){
     value += j;
     count++;
    }
}
double sum = (value/count);
text.append(i + ";" + df.format(sum) + "; \n");

Wie wär es damit?
 

Spin

Top Contributor
Moin ;)

Wenn man immer nur am PHP proggen ist, ist der Java syntax ein wenig zu strikt XD


Java:
int[] arrayT = new int[iHeight];
			
			for(int i=0; i<iWidth; i++){
				
				int count = 0;
				
				for(int j=0; j<iHeight; j++){
					
					int redCurve   = new Color(aCurve[i][j]).getRed();
					int greenCurve = new Color(aCurve[i][j]).getGreen();
					int blueCurve  = new Color(aCurve[i][j]).getBlue();					
					
					if(redMouse == redCurve && greenMouse == greenCurve && blueMouse == blueCurve)
					{		
						arrayT[count] = iHeight-j;	
					}
					else{
						arrayT[count] = -1;
						
					}
					count++;
				}
				if(count > 0){
				
				double value = 0;
				
					int l =0;
					for(int k=l; k <=arrayT.length; k++){
						
						while(arrayT[l] > -1){
							value += arrayT[l];
							IJ.log("" +  value);
							l++;
						}
						if(value > 0){
							double sum = (value/count);
							text.append(i + ";" + df.format(sum) + "; \n");
						}
					}
				}
			}

Thats it , ich speicher die Pixel in ein Array. Und diese haben ein x,y wert.
x = i , y = j.

Mein i hat mehrere j werte und ich brauche nur ein j wert.
Teilweise sind Lücken zwischen den einzelnen j werten die ich mit -1 fülle, als Platzhalter.

Damit ich dann getrennt j1 und j2 durch die Anzahl rechnen kann und damit ich später j15 und j16 durch Anzahl (2) rechnen kann.

Dann habe ich jeweils den Mittelwert.
Solange die j werte > 2 aus einanderliegen ist es ok , sie dürfen aber nicht >1 sein, denn dann sind die Pixel nebeneinander (untereinander) und es wären keine zwei versichiedene Punkte sondern ein großer.
 

byron1778

Aktives Mitglied
Hallo!

Ich hoffe, ich habe dich soweit richtig verstanden.
Mein Programm sieht so aus, allerdings gibt es noch einen kleinen Fehler darin, kann ihn aber leider nicht gerade suchen, da ich nicht genügend zeit habe ...

Du müsstest noch ein wenig anpassen, denke ich ...

Hoffe, es hilft dir weiter!

Code:
public class rechneArrayWerte {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		int[] zahl = {15 , 14 , 13 , -1 , -1 , -1 , -1 , -1 , 22, 22, 23, 34, -1};
		int z = 0;
		int res = 0;
		int y = 0;
		
		for(int i = 0; i <= zahl.length; i++) {
			if (zahl[i] == -1 && y != 0) {
				res /= y;
				y=0;
				System.out.println(res);
				res=0;
			} else {
				res+=zahl[i];
				y++;
				System.out.println(res);
			}
		}
	}
}

Bitte über den schlechten Code - Stil hinwegsehen, bin nicht der beste Java Programmierer od so ...
 

Spin

Top Contributor
Vielen Dank für deinen Ansatz, aber er würde immer noch alle Werte zusammenrechnen und diee nicht einzelnd betrachten, da wir das Result ja noch irgendwo ablegen müssen, bevor die schleife weiter rödelt.

Das ist mein größtes Problem zu wissen wie ich das value aufaddier und dann dieses Result zwischen schreibe und dann weiter laufe.

:rtfm:
 
G

Gast2

Gast
Ich glaub ich versteh immer noch nicht was du machen willst...

Wie du die Felder aufaddierst steht in meinem vorigen Post - deine While-Schleife ist etwas "unglücklich".
 

Andi_CH

Top Contributor
Uff - und wer wird in 10 Jahren zuverlässige software schreiben :shock:

Java:
public class Durchscnitt {
	
	static int[] input = {15 , 14 , 13 , -1 , -1 , -1 , -1 , -1 , 22, 33 , 15, -1, -1, -1, 66, 32, -1 ,-1};

	public static void main(String[] args) {
		int summe = 0;
		int anzahl = 0;
		for (int i=0; i<input.length; i++) {
			if (input[i] != 0) {
				summe += input[i];
				anzahl++;
			}
		}
		System.out.println(anzahl + " Werte gefunden. Summe = " + summe + ". Durchschnitt = " + (1.0* anzahl) / summe);
	}
}

Aufwand < 1 Minute
 

VfL_Freak

Top Contributor
Moin,

Uff - und wer wird in 10 Jahren zuverlässige software schreiben :shock:

Java:
public class Durchscnitt {
	
	static int[] input = {15 , 14 , 13 , -1 , -1 , -1 , -1 , -1 , 22, 33 , 15, -1, -1, -1, 66, 32, -1 ,-1};

	public static void main(String[] args) {
		int summe = 0;
		int anzahl = 0;
		for (int i=0; i<input.length; i++) {
			if (input[i] != 0) {
				summe += input[i];
				anzahl++;
			}
		}
		System.out.println(anzahl + " Werte gefunden. Summe = " + summe + ". Durchschnitt = " + (1.0* anzahl) / summe);
	}
}

Aufwand < 1 Minute

Toll :toll: ..... aber Du solltest Dir mal den ersten Post hier durchlesen :eek:
Es sollen alle Werte bis zum ersten Auftreten von -1 addiert, NICHT alle ungleich 0 - wozu übrigens auch -1 gehört :D

Gruß
Klaus
 

byron1778

Aktives Mitglied
ahm, ganz habe ich dich wie man sieht nicht verstanden.
willst du vll, dass er die werte durchgeht im array wie folgt:

zB:

array = 1, 2, 3, -1 , -1, 4, 5, 6

1 + 2 + 3 ... = 6
-1 wird ignoriert
und jetzt einfach weiter addiert bei 4 +5 + 6 und dieses ergebnis mit dem ersten zusammenaddiert, ergibt daher dann für diese 6 zahlen: 20 und jetzt daraus der mittelwert gezogen?

wäre dann 20 / 6 = 3, irgendwas ...

ist es so richtig verstanden?
 

Spin

Top Contributor
@ Andi

Danke für deine Mühe, aber das was du gemacht hast schaffe ich auch unter einer Minute :p

Spass beiseite , mein Problem besteht immer noch !!
Java:
double value = 0;
				double sum = 0;
				double[] a = new double[100];
				int y = 0;
				int v = 0;
				for(int m = 0; m < arrayT.length; m++) {
					if (arrayT[m] == -1 && y != 0) {
						
						if(value > 0){
							sum = (value/y);
							a[v] = sum;
							v++;
						}
						y = 0;
						value=0;
					} else {
						value+=arrayT[m];
						y++;
					}
				}
				for(int c = 0; c < a.length; c++ ){
					if (a[c] != 0){
					text.append(i + ";" + df.format(a[c]) + "; \n");
					}
				}

Das war ein hilfreicher Ansatz von byron , jedoch muss am ende immer eine -1 stehen.

Ich möchte einfach den Durchschnitt der Werte berechnen bis eine -1 kommt.
Und das funktioniert oben auch so dass jetzt jedes i mehrere j hat.

Hoffe ihr habt mich jetzt besser verstanden!:oops:


Mein größtes Problem ist halt das Arrays nicht zu laufzeit geändert werden können.

Listen darf ich nicht verwenden , mit ArrayList wäre ich schon fertig , grml
 
Zuletzt bearbeitet:
G

Gast2

Gast
Hoffe ihr habt mich jetzt besser verstanden!:oops:

Ehrlich gesagt: Nein!

Gehen wir mal davon aus du hast:
Java:
int[] ints = new int[]{15 , 14 , 13 , -1 , -1 , -1 , -1 , -1 , 22, 33 , 15, -1, -1, -1, 66, 32, -1 ,-1};

Was soll damit jetzt gemacht werden?
15+14+13+22+33+15+66+32 / 8? Dann wäre die Aufgabe schon im dritten Posting gelöst.
Oder:
15+14+13 / 3
22+33+15 / 3
66 + 32 / 2
Oder:
(15+14+13 / 3) + (22+33+15 / 3) + (66 + 32 / 2)
Oder...

Schreib doch mal was aus der Reihe jetzt berechnet werden soll?
 

Spin

Top Contributor
Berechnet werden soll:

Oder:
15+14+13 / 3 -> X
22+33+15 / 3 -> Y
66 + 32 / 2 -> Z

Die Werte die ich dann jeweils bekomme: X, Y, Z

Schreibe ich in ein File.
Somit hat mein i , was zum anfang 1 ist :

1 -> X
1 -> Y
1 -> Z

so stehts dann in Excel drin.

Dann kommt die 2.

die 2 bekommt ein neues array mit -1 und Werten :

und :


HTML:
1	295,56
2	312
3	293,09
3	282,27
4	325,5
4	270,36
5	327,5
5	261,67
6	330
6	291

Und so ist es bisher bei mir.

Sieht gut aus aber Excel macht mir daruas nicht die funktion die ich eigentlich haben möchte danke.
 

Andi_CH

Top Contributor
Moin,



Toll :toll: ..... aber Du solltest Dir mal den ersten Post hier durchlesen :eek:
Es sollen alle Werte bis zum ersten Auftreten von -1 addiert, NICHT alle ungleich 0 - wozu übrigens auch -1 gehört :D

Gruß
Klaus
Aufwand weitere 1 Sekunden
Java:
public class Durchschnitt {

	static int[] input = {15 , 14 , 13 , -1 , -1 , -1 , -1 , -1 , 22, 33 , 15, -1, -1, -1, 66, 32, -1 ,-1};

	public static void main(String[] args) {
		int summe = 0;
		int anzahl = 0;
		for (int i=0; i<input.length; i++) {
			if (input[i]==-1)
				break;
			summe += input[i];
			anzahl++;
		}
		System.out.println(anzahl + " Werte gefunden. Summe = " + summe + ". Durchschnitt = " + (1.0* anzahl) / summe);
	}
}

Manchmal ist man sogar schneller, wenn man nicht all zu genau liest :lol:


Aber was du lieber TO eigentlich willst ist glaub auser dir niemandem bekannt ???:L???:L???:L
 
Zuletzt bearbeitet:
G

Gast2

Gast
@Andi - ist aber noch nicht was er will...

@TO
Mit Listen schummeln und Strings nehmen ;)

Java:
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int[] ints = new int[]{15 , 14 , 13 , -1 , -1 , -1 , -1 , -1 , 22, 33 , 15, -1, -1, -1, 66, 32, -1 ,-1};
		
	
		String sInts = Arrays.toString(ints);
		sInts = sInts.substring(1,sInts.length()-1);
		
		String[] strings = sInts.split("-1");
		
		for(int idx = 0, count = 0; idx < strings.length; idx++){
			
			String s = strings[idx];
			s = s.replace(",", "").trim();
			if(!s.isEmpty()){
				count++;
				String[] intGroup = s.split(" ");
				double value = 0.0;
				for(int i = 0; i < intGroup.length; i++){
					value += Integer.parseInt(intGroup[i]);
				}
				System.out.println(count+": "+s+" =>"+value/intGroup.length);
			}
		}
	}

Code:
1: 15 14 13 =>14.0
2: 22 33 15 =>23.333333333333332
3: 66 32 =>49.0

Oder abr mit Arrays.copyOfRange arbeiten und die int Blöcke immer "ausschneiden" und einzeln behandeln.
 
Zuletzt bearbeitet von einem Moderator:

Spin

Top Contributor
@fassy

Ich bin sehr dankbar für deine Lösung, die mir genau das löst , was ich mir vorgestellt habe :)

Vielen Dank, wobei ich es mit Arrays nun erstmal lassen werde. Denn damit schreibe ich mir Werte in die Liste, die dem ganzen Kram nicht entsprechen.

Das Problem ist leider , dass man immer zusehen muss, diese vorzudefinieren.
Listen sind dynamisch und daher für sowas immer besser geeignet.

Wobei die Funktionen für Strings mir alle geläufig sind, bin ich selbst nicht auf die idee gekommen. Super

* Bin Happy über die fleißigen Leute die sich Zeit nehmen und meine Probleme mit lösen :) *

:toll:
:toll:

@fassy , glückwunsch zum 1000 sten Beitrag :p
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Bestimmte werte aus einem Array löschen Java Basics - Anfänger-Themen 2
E Reihenfolge der Werte umdrehen (mittels statischem int-Array Java Basics - Anfänger-Themen 3
A CSv.Datei einlesen und die werte in zweidemosional Int Array speichern Java Basics - Anfänger-Themen 9
Chris.089 2 Werte im Array tauschen Java Basics - Anfänger-Themen 6
Igig1 Wie lasse ich dir Werte in einem Array zusammenrücken? Java Basics - Anfänger-Themen 4
Igig1 Welche Werte sind als default Werte in einem Array, der als Datentyp eine Klasse hat? Java Basics - Anfänger-Themen 1
sashady ursprüngliche Array-Werte bei erneutem Aufruf? Java Basics - Anfänger-Themen 7
E In Array Werte einfügen? Java Basics - Anfänger-Themen 5
HighLife Bestimmte Werte aus Array zählen Java Basics - Anfänger-Themen 15
G Array Werte addieren Java Basics - Anfänger-Themen 4
J Methoden Frage: Array-Werte in anderer Methode ändern Java Basics - Anfänger-Themen 4
C Array-Werte werden gemischt, ohne Logik Java Basics - Anfänger-Themen 2
L 2 Dimensional Array werte überschreiben Java Basics - Anfänger-Themen 1
K Array alle Werte aufsummieren und ausgeben Java Basics - Anfänger-Themen 6
J Neue Werte in ein Array hinzugeben Java Basics - Anfänger-Themen 8
L Wie frage ich ab, ob in einem Array, Werte doppelt vorkommen? Java Basics - Anfänger-Themen 4
Kirby.exe Fehlende Int Werte aus Array mit streams finden Java Basics - Anfänger-Themen 19
Ellachen55 Wie nach häufigste Werte im Array suchen? Java Basics - Anfänger-Themen 2
B Werte aus einem Unterprogramm in ein Array schreiben Java Basics - Anfänger-Themen 2
L Nur Bestimmte Werte aus einem Array in ein anderes Speichern Java Basics - Anfänger-Themen 11
M prüfen ob alle array werte gleich sind Java Basics - Anfänger-Themen 27
D Werte aus einem BinärBaum in einem Array speichern Java Basics - Anfänger-Themen 1
L Werte zufällig aus Array zurückgeben Java Basics - Anfänger-Themen 15
L Gleiche Werte aus Array aussortieren Java Basics - Anfänger-Themen 5
L Gleiche Werte im Array hochzählen Java Basics - Anfänger-Themen 4
N Array-Werte zusammenfassen Java Basics - Anfänger-Themen 20
J Array Werte benutzen Java Basics - Anfänger-Themen 16
D Erste Schritte Array Werte an Methode übergeben Java Basics - Anfänger-Themen 6
S Array Werte vertauschen Java Basics - Anfänger-Themen 2
D Array Werte einlesen und ausgeben? Java Basics - Anfänger-Themen 8
F Werte in 2D-Array mit anderem 2D-Array überschreiben Java Basics - Anfänger-Themen 2
R Werte aus Array addieren und Mittelwert bilden Java Basics - Anfänger-Themen 2
S Werte in Array einlesen Java Basics - Anfänger-Themen 2
B Array Werte zuweisen Java Basics - Anfänger-Themen 4
U Array werte speichern und für berechnungen nutzen Java Basics - Anfänger-Themen 4
K Datentypen Werte im Array vertauschen Java Basics - Anfänger-Themen 11
J Variablen Doppelte Werte in Int Array Java Basics - Anfänger-Themen 10
stylegangsta Anzahl der gefunden array Werte ausgeben Java Basics - Anfänger-Themen 6
J Integer-Werte in Array ein- bzw. auslesen Java Basics - Anfänger-Themen 7
C Werte im Array sortieren Java Basics - Anfänger-Themen 5
A Array in Subklasse - Werte aus Superklasse Java Basics - Anfänger-Themen 4
D Array in Endlosschleife überschreibt vorherige Werte Java Basics - Anfänger-Themen 4
T Array soll Werte aufnehmen Java Basics - Anfänger-Themen 2
C Array kopieren und nur bestimmte Werte speichern Java Basics - Anfänger-Themen 6
J Werte der For-Schleife in Array abspeichern Java Basics - Anfänger-Themen 1
L [ARRAY] Werden hier die Indezes oder die Werte vergliechen? Java Basics - Anfänger-Themen 4
C Rekursion auf einem Array(negative werte addieren) Java Basics - Anfänger-Themen 4
B Doppelte Werte aus Array entfernen ohne Import - Algorithmus Java Basics - Anfänger-Themen 5
E Array Anzahl verschiedener Werte ausgeben Java Basics - Anfänger-Themen 3
M Kann einen Array nicht füllen, im Nachhinein nur "null"-Werte Java Basics - Anfänger-Themen 11
C Array - Werte speichern und ausgeben Java Basics - Anfänger-Themen 5
D Neue Array übernimmt Werte des alten nicht Java Basics - Anfänger-Themen 5
C Erste Schritte Array Werte Ausgeben Probleme mit variable Java Basics - Anfänger-Themen 21
S Array befüllen & auf doppelte werte prüfen Java Basics - Anfänger-Themen 6
M In Testklasse einem Array Werte übergeben Java Basics - Anfänger-Themen 6
B Werte über Scanner in ein 3 dim String Array schreiben Java Basics - Anfänger-Themen 7
F Einzelne Werte aus einem Array vergleichen? Java Basics - Anfänger-Themen 8
D Array auslesen und und Werte in ein anderes array anlegen Java Basics - Anfänger-Themen 5
J Integer Werte in Array einlesen Java Basics - Anfänger-Themen 6
C Erste Schritte Integer Werte in Array kopieren Java Basics - Anfänger-Themen 21
T Methoden in einer array werte vergleichen Java Basics - Anfänger-Themen 6
S Werte aus Array auslesen über Variableninhalt Java Basics - Anfänger-Themen 2
S Einzelne Werte von Array-Feld löschen Java Basics - Anfänger-Themen 15
T Beliebig viele Werte in Array zwischenspeichern Java Basics - Anfänger-Themen 15
K Erste Schritte Array mit 3 werte in eine Zeile -- Hilfe! Java Basics - Anfänger-Themen 2
T Aus object Array Double Werte ziehen Java Basics - Anfänger-Themen 10
2 Alle Werte die mit n Würfeln mit m Seiten geworfen werden können in ein n Dimensionales Array Java Basics - Anfänger-Themen 15
B Werte aus JTextArea in einem String Array ablegen Java Basics - Anfänger-Themen 4
R array werte ausgeben/zugreifen Java Basics - Anfänger-Themen 8
D werte in array speichern Java Basics - Anfänger-Themen 26
B Datentypen Werte in einen Array einlesen und danach die beiden höchsten Werte wieder ausgeben Java Basics - Anfänger-Themen 3
B Werte aus einem Array umwandeln Java Basics - Anfänger-Themen 10
J Array Werte subtrahieren Java Basics - Anfänger-Themen 8
J int[] array Werte einem int übergeben Java Basics - Anfänger-Themen 9
M Byte Array: Werte größer 127? Java Basics - Anfänger-Themen 11
J Rekursion über int und array gibt zu wenige Werte zurück Java Basics - Anfänger-Themen 5
P doppelte Werte im Array ausgeben. Java Basics - Anfänger-Themen 4
P Werte im Array abwechselnd ausgeben Java Basics - Anfänger-Themen 4
S Char Array Werte in short variablen speichern Java Basics - Anfänger-Themen 4
G Array-Werte Zaehlung Java Basics - Anfänger-Themen 14
G Zählen gleiche Werte in Array Java Basics - Anfänger-Themen 5
X Errechte Werte automatisch in einem Array speichern Java Basics - Anfänger-Themen 11
7 Array speichert Werte nicht? NullPointerException Java Basics - Anfänger-Themen 2
M an String-Array weitere Werte anhängen Java Basics - Anfänger-Themen 22
G array werte in array2 schreiben Java Basics - Anfänger-Themen 6
G Werte im Array zählen Java Basics - Anfänger-Themen 13
G static array liefert falsche Werte zurück Java Basics - Anfänger-Themen 2
K Neue Werte für gleiche Array-Indexe Java Basics - Anfänger-Themen 16
D Werte in Array speicher Java Basics - Anfänger-Themen 8
J Verhindern das Werte in einem Array verloren gehen Java Basics - Anfänger-Themen 13
G Array werte auslesen Java Basics - Anfänger-Themen 6
F Array - Vorkommen der einzelnen Werte ausgeben Java Basics - Anfänger-Themen 8
G Dem array automatisch werte von -10 bis +10 zuweisen Java Basics - Anfänger-Themen 6
S Grösste Werte im Array! Java Basics - Anfänger-Themen 4
F Einem Array Werte zuweisen. (illegal start of expression) Java Basics - Anfänger-Themen 4
S Array Werte inkrem. Java Basics - Anfänger-Themen 2
P Aus Array Werte rauslesen und in Kuchendiagramm abbilden Java Basics - Anfänger-Themen 7
N Mehrere Werte gleichzeitig in ein Array schreiben? Java Basics - Anfänger-Themen 7
T Array verkleinern Java Basics - Anfänger-Themen 2
J Array aus Numberfield Eingaben Java Basics - Anfänger-Themen 7

Ähnliche Java Themen

Neue Themen


Oben