Maximum, Minimum und Mittelwert berechnen

Status
Nicht offen für weitere Antworten.

manu1588

Mitglied
hi!

ich würde gerne beliebig viele zahlen in ein programm eingeben, welches wenn ich 0 eingebe, beendet wird, und von diesen zahlen möchte ich max, min und mittelwert haben. ich weiß dass es am besten mit einem array geht, ich habe es auch schon fast fertig nur der letzte zacken fehlt mir noch, könnt ihr mir helfen?

import java.util.Scanner;
public class maxminmittelwert {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub

int [] array = new int [300];

Scanner a = new Scanner(System.in);
Scanner b = new Scanner(System.in);

int max = 0;
int min = 0;
double mittelwert = 0;
double summe = 0;
int i = 0;

System.out.println("Bitte geben Sie eine Zahl ein");

for (i =0; i<=10;)

array = b.nextInt();

summe = summe + array;

i ++;
if (array>max) {
max = array;
}

if (array<min) {
min = array;
}

mittelwert = summe / i;

System.out.println("Maximum: " + max + ", Minimum: " + min + ", Mittelwert: " + mittelwert );
}

}
 
M

MiDniGG

Gast
also erstmal... diese for-"Schleife" geht so nicht. So ganz ohne Klammern und so.
min und max geht sicher mit Math.max() und Math.min()
wobei das ein bisschen umständlich werden könnte...

Auch musst du die "0" noch abfangen. Am Besten mit ner if-abfrage... Also wenn System.in.equals("0") dann alles nach dem System.out von dir oder irgendwie so... Keine Lust zu schaun wies richtig geht...
 

Niki

Top Contributor
Code:
public static void main(String[] args) {
		// TODO Auto-generated method stub

		List<Integer> array = new ArrayList<Integer>();

		Scanner scanner = new Scanner(System.in);

		int max = 0;
		int min = 0;
		double mittelwert = 0;
		double summe = 0;

		int i = -1;
		do {
			System.out.println("Bitte geben Sie eine Zahl ein (0 für Abbruch)");
			String s = scanner.next();

			try {
				i = Integer.parseInt(s);
				if (i != 0)
					array.add(i);
			} catch (Exception ex) {
				i = -1;
			}
		} while (i != 0);

		boolean first = true;
		for (Integer next : array) {
			summe = summe + next;
			if (next > max)
				max = next;
			if (first){
				min = next;
                                first = false;
			}else if (next < min)
				min = next;			
		}

		mittelwert = summe / array.size();

		System.out.println("Maximum: " + max + ", Minimum: " + min
				+ ", Mittelwert: " + mittelwert);
	}
 

Noar

Bekanntes Mitglied
Hi,

noch zwei kleine Tips:

1. Klassennamen sollten IMMER mit einem Großbuchstaben beginnen (also in deinem Falle vielleicht "MaxMinMittelwert").

2. Verwende in Zukunft beim posten von Quellcode bitte die <Code>-Tags. Dann sieht es so aus wie bei Niki und ist für alle einfacher zu lesen.
 
M

MiDniGG

Gast
Sorry fehler bei mir im Browser... :oops:

Beitrag kann gelöscht werden ^^
 

manu1588

Mitglied
@niki

ist es denn nicht möglich, das ganze aus meinem code zu machen? dieser riesig lange neue funktioniert auch nicht gleich und bevor ich da fehler suche würde ich gerne meinen code funktionierend haben. bitte sehr, danke sehr

lg manu1588
 

Niki

Top Contributor
was funktioniert nicht? bei mir funktioniert es, eventuell fehlen noch imports bei dir?
 

manu1588

Mitglied
also es funktioniert jz alles bis auf den mittelwert und zwar mit folgendem code:

Code:
import java.util.Scanner;
public class maxminmittelwert {
	public static void main(String[] args) {
	// TODO Auto-generated method stub 

   int[] array = new int [300]; 

    Scanner s = new Scanner(System.in); 

    int max = 0; 
    int min = 0; 
    double mittelwert = 0; 
    double summe = 0; 

    int i = 0; {
    do { 
       System.out.println("Bitte geben Sie eine Zahl ein (0 für Abbruch)"); 
       array[i] = s.nextInt(); 
       
       for (Integer next : array) { 
          summe = summe + next; 
          if (next > max) 
             max = next; 
          if (next < min) 
             min = next; 
                                
       }
       
    } while (array[i] != 0); 

    mittelwert = summe / i;
    
    System.out.println("Maximum: " + max + ", Minimum: " + min 
          + ", Mittelwert: " + mittelwert); 

}
	}
}
 

Niki

Top Contributor
du musst noch "i" in der Schleife hochzählen, sonst überschreibst du immer nur das erste Element

machs mal so
Code:
do {
       System.out.println("Bitte geben Sie eine Zahl ein (0 für Abbruch)");
       array[i] = s.nextInt();
       
     
          summe = summe + array[i];
          if (array[i] > max)
             max = array[i];
          if (array[i] < min)
             min = array[i];
                               
      
       i++;
    } while (array[i] != 0);
 

manu1588

Mitglied
hm irgendwas stimmt noch immer nicht, er gibt zwar max und min richtig aus, aber den mittelwert berechnet er immer falsch:

Code:
import java.util.Scanner; 
public class maxminmittelwert { 
   public static void main(String[] args) { 
   // TODO Auto-generated method stub 

   int[] array = new int [300]; 

    Scanner s = new Scanner(System.in); 

    int max = 0; 
    int min = 0; 
    double mittelwert = 0; 
    double summe = 0; 
    double anzahl = 1;

    int i = 0; { 
    do { 
       System.out.println("Bitte geben Sie eine Zahl ein (0 für Abbruch)"); 
       array[i] = s.nextInt(); 
        
       for (Integer next : array) { 
          summe = summe + next; 
          anzahl = anzahl + 1;
          if (next > max) 
             max = next; 
          if (next < min) 
             min = next;                         
       } 
      
    } while (array[i] != 0); 
    i++; 
    mittelwert = summe / anzahl; 
    
    System.out.println("Maximum: " + max + ", Minimum: " + min 
          + ", Mittelwert: " + mittelwert); 

} 
   } 
}
 

Niki

Top Contributor
i++ gehört in die schleife, draußen bringts dir gar nichts, die for-schleife brauchst du nicht, schau dir bitte nochmal meinen vorigen post an!
 

manu1588

Mitglied
NEIN, denn dann bricht er jedes mal nach einer eingegebenen zahl ab und wenn ichs außerhalb habe funktioniert alles außer der blöde mittelwert !!!!!!!!!
 

manu1588

Mitglied
jetzt ist es in der schleife und es geht noch immer nicht :? :bahnhof: ???:L

Code:
import java.util.Scanner; 
public class maxminmittelwert { 
   public static void main(String[] args) { 
   // TODO Auto-generated method stub 

   int[] array = new int [300]; 

    Scanner s = new Scanner(System.in); 

    int max = 0; 
    int min = 0; 
    double mittelwert = 0; 
    double summe = 0; 
    double anzahl = 1; 

    int i = 0; { 
    do { 
       System.out.println("Bitte geben Sie eine Zahl ein (0 für Abbruch)"); 
       array[i] = s.nextInt(); 
        
       for (Integer next : array) { 
          summe = summe + next; 
          anzahl = anzahl + 1; 
          if (next > max) 
             max = next; 
          if (next < min) 
             min = next;                          
          next++; 
       } 
       
    } while (array[i] != 0); 

    mittelwert = summe / anzahl; 
    
    System.out.println("Maximum: " + max + ", Minimum: " + min 
          + ", Mittelwert: " + mittelwert); 

} 
   }
 

Niki

Top Contributor
der index deines arrays bleibt immer gleich --> du überschreibst immer das selbe wert mit der neuen zahl, außerdem wird deine summe bei jeder neuen zahl komplett neu berechnet.

Das erste Beispiel von mir funktioniert, ob du es glaubst oder nicht.
 

Niki

Top Contributor
So, das funkt. und diesmal ohne list...
Code:
import java.util.Scanner;

public class MinMaxMitte {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner s = new Scanner(System.in);

		int max = 0;
		int min = 0;
		double mittelwert = 0;
		double summe = 0;

		int i = 0;

		int next = 0;

		boolean first = true;
		do {
			System.out.println("Bitte geben Sie eine Zahl ein (0 für Abbruch)");

			next = s.nextInt();

			if (next != 0) {				
				summe = summe + next;

				if (next > max)
					max = next;
				if (first) {
					min = next;
					first = false;
				} else {
					if (next < min)
						min = next;
				}				
				i++;
			}

		} while (next != 0);

		mittelwert = summe / i;

		System.out.println("Maximum: " + max + ", Minimum: " + min
				+ ", Mittelwert: " + mittelwert);

	}
}
 

Noar

Bekanntes Mitglied
Hi,

Versuch doch lieber Nikis Code zu verstehen, sein Beispiel funktioniert, und ist einfach aufgebaut.

Dein Minimum ist falsch (müsste immer 0 sein), weil du die letzte Eingabe (0) mitrechnest.
Dein Mittelwert ist falsch, weil deine for-Schleife nach jeder Eingabe 300 mal durchlaufen wird, und somit deine Variable Eingabe jedesmal um 300 hochgezählt wird.
 

manu1588

Mitglied
habe mir jetzt den code von niki genauer angeschaut und da ich sehr unerfahren mit java bin verstehe ich sehr viele sachen nicht, genau deshalb hätte ich eben gerne, dass ihr mir nur ganz schnell menien fertig schreibt, denn ich denke nicht dass da so viel falsch ist
 

Niki

Top Contributor
Es ist zu viel falsch in deinem Code dass man dein einfach ausbessern könnte....
Mein Code ist einfach zu verstehen:
Es wird eine Eingabe gemacht. Diese Eingabe wird der Variablen next zugeordnet. Wenn der Wert 0 ist wird abgebrochen.
Wenn es die erste Eingabe war (mit boolean variable first wird das überprüft) wird min zunächst einmal auf next gesetzt, wenn nicht, wird überprüft ob next kleiner min ist, wenn ja ist der neue min wert eben next.
Das gleiche Spielchen findet für max statt. Es wird überprüft ob next größer ist als der aktuelle max wert, wenn ja wird max der neue Wert zugewiesen. Gleichzeitig wird einfach ein Zähler hochgezählt (i) und der Wert zur Summe dazuaddiert.
Nach der Schleife wird einfach die Summe durch die Anzahl der eingegebenen Werte (i) dividiert um den Mittelwert zu berechnen.
Fazit:
Du brauchst kein Array weil alle Abfragen direkt nach der Eingabe erfolgen können und die Werte gleich gesetzt werden.
 
W

willi3

Gast
Hallo!
Ich habe das selbe Problem.
Allerdings soll ich mein Programm mit einer do-while Schleife schreiben.

In der Zeile mit while schreibt eclipse folgende Fehlermeldung:
a cannot be resolved to a variable.

Ich finde leider keinen Fehler.
Kann mir bitte jemand weiterhelfen??

Java:
import java.util.Scanner;

public class Aufgabe7c {

		public static void main(String[] args) {
	
		System.out.println ("Geben Sie bitte ein paar ganze Zahlen ein.");
		System.out.println ("Das Programm wird beendet, sobald Sie 0 eingeben.");
		
		Scanner sc = new Scanner(System.in);
		int min=0, max=0, sum=0, anz=0;
						
		do {
			
			int a = sc.nextInt();
			if (a >0) {
				if (anz==1){min=a;} else  {
				min = Math.min(a, min); }
				max = Math.max(a, max);
				sum=sum+a;
				anz++;
			   }
			} while (a >0);
		
        int mit =sum/anz;
		
		System.out.println("Minimum = "+min+", Maximum = "+max+" Mittelwert = "+mit);
		}		

}
 
K

Kirchhoff

Gast
Vielleicht "a" deklarieren.
Oben im code bei der "main-methode" [c]int a;[/c]
 

Gossi

Bekanntes Mitglied
Mehr an deinen Code halten kann man sich nicht, gut ist die Variante auch nicht, schau dir lieber den Code von Niki zu verstehen. Wenn du damit Probleme hast, dann wirst du beim Programmieren sicherlich niemals glücklich....

Java:
import java.util.Scanner;

public class MaxMinMittelwert {

	public static void main(final String[] args) {

		int[] array = new int[300];

		Scanner s = new Scanner(System.in);

		int max = Integer.MIN_VALUE; // -2147483648
		int min = Integer.MAX_VALUE; // 2147483647
		// MIN_VALUE und MAX_VALUE dienen dazu, dass wirklich alle werte erfasst
		// werden
		double mittelwert = 0;
		double summe = 0;
		double anzahl = 0;
		// Anzahl muss 0 sein, nicht 1

		// Durch die while-Schleife kannst du die eingaben direkt Pruefen
		int i = 0;
		int last = -1;
		while (last != 0) {
			System.out.println("Bitte geben Sie eine Zahl ein (0 für Abbruch)");
			last = s.nextInt();
			// Ganz wichtig: auf 0 pruefen
			if (last != 0) {
				array[i] = last;
				i++;
			}
		}

		// Wenn du hier erst das Array durchgehst bekommst du bei der Anzahl
		// auch keine falschen Werte mehr
		for (Integer next : array) {
			//Sobald ein Wert 0 ist, kann die Suche beendet werden
			if (next != 0) {
				summe = summe + next;
				anzahl = anzahl + 1;
				if (next > max) {
					max = next;
				}
				if (next < min) {
					min = next;
				}
			} else {
				break;
			}
		}

		//So, noch eben den Mittelwert berechnen
		mittelwert = summe / anzahl;

		//Und fertig
		System.out.println("Maximum: " + max + ", Minimum: " + min
				+ ", Mittelwert: " + mittelwert);
		
		/*
		 * Ausgabe:
		 * 
		 * Bitte geben Sie eine Zahl ein (0 für Abbruch)
		 * 4
		 * Bitte geben Sie eine Zahl ein (0 für Abbruch)
		 * 2
		 * Bitte geben Sie eine Zahl ein (0 für Abbruch)
		 * 0
		 * Maximum: 4, Minimum: 2, Mittelwert: 3.0
		 */

	}

}

PS:
Funktioniert so geschrieben sogar mit negativen Zahlen.
 
Zuletzt bearbeitet:

Jake?!

Mitglied
@Gossi: Der letzte Post von manu in diesem Thread ist 3 einhalb Jahre her, ich glaube er wird sich nicht mehr soo sehr für diese Klasse interessieren ;-)
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
H Minimum und Maximum ausgeben lassen Java Basics - Anfänger-Themen 7
R Erste Schritte Minimum und Maximum in Array finden Java Basics - Anfänger-Themen 29
A Felder- Minimum/Maximum Java Basics - Anfänger-Themen 2
P Lokales Minimum- Maximum, Globales Minimum - Maximum ? Java Basics - Anfänger-Themen 4
P Minimum/Maximum aus einer Liste Java Basics - Anfänger-Themen 3
S Array Maximum bestimmen mit for und foreach Java Basics - Anfänger-Themen 7
RudiRüssel Binäre Suche, unsortiert, lokales Maximum Java Basics - Anfänger-Themen 15
J Maximum herauskriegen mit foreach Java Basics - Anfänger-Themen 6
S Compiler-Fehler im array Maximum ermitteln Java Basics - Anfänger-Themen 6
M Maximum einer sinusfunktion (Spalt-Experiment) Java Basics - Anfänger-Themen 5
hello_autumn Maximum berechnen. Java Basics - Anfänger-Themen 17
K Maximum Suchen Array Java Basics - Anfänger-Themen 6
D VM Argumente - Das Maximum rausholen Java Basics - Anfänger-Themen 19
V Maximum berechnen ... Java Basics - Anfänger-Themen 20
S JSplitPane Divider Maximum Position Java Basics - Anfänger-Themen 5
D Maximum Subarray Problem; Problem mit der Rückgabe Java Basics - Anfänger-Themen 10
J Das Maximum einer Liste ermitteln Java Basics - Anfänger-Themen 8
S JAVA Methode für Maximum aus 4 ganzen Zahlen Java Basics - Anfänger-Themen 12
T aus Integer Array Maximum bestimmen Java Basics - Anfänger-Themen 7
R maximum in integer array suchen Java Basics - Anfänger-Themen 29
B Applet, welches Maximum eines Array bestimmt Java Basics - Anfänger-Themen 2
Z Zahlenreihe maximum Java Basics - Anfänger-Themen 3
U Maximum zweier Zahlen ermitteln Java Basics - Anfänger-Themen 7
D Maximum werte eines Arrays bestimmen !!!??? Java Basics - Anfänger-Themen 13
S maximum zweier Zahlen Java Basics - Anfänger-Themen 1
H Minimum in einem Array bestimmen Java Basics - Anfänger-Themen 7
N Minimum ausgeben lassen Java Basics - Anfänger-Themen 5
Z If abfrage - Minimum 0 Java Basics - Anfänger-Themen 9
B Java rekursion minimum von ein array Java Basics - Anfänger-Themen 2
1 Minimum aller Elemente in einem Array bestimmen Java Basics - Anfänger-Themen 10
S Minimum von 5 Werten Java Basics - Anfänger-Themen 6
E Minimum wird nicht ausgegeben Java Basics - Anfänger-Themen 9
B Minimum eines Int Arrays Java Basics - Anfänger-Themen 6
S Minimum eines String-Arrays Java Basics - Anfänger-Themen 16
G Erste Schritte Array Mittelwert Methode Programmieren Java Basics - Anfänger-Themen 5
P Mittelwert Arrayelemente berechnen Fehler Java Basics - Anfänger-Themen 5
J Variablen arithmetischen Mittelwert berechnen Java Basics - Anfänger-Themen 5
M Erste Schritte Mittelwert berechnen -> Methode in der Methode? Java Basics - Anfänger-Themen 14
P Erste Schritte Mittelwert zeitlich abhängiger Werte Java Basics - Anfänger-Themen 1
R Werte aus Array addieren und Mittelwert bilden Java Basics - Anfänger-Themen 2
G Array Mittelwert berechnen, wie? Java Basics - Anfänger-Themen 8
M Methoden Mittelwert rationaler Zahlen mittels Methode Java Basics - Anfänger-Themen 4
V Mittelwert berechnen Java Basics - Anfänger-Themen 31
F Gewichteter Mittelwert über eine Zeitperiode Java Basics - Anfänger-Themen 3
N Erste Schritte Mittelwert in Array Java Basics - Anfänger-Themen 4
P Mittelwert rekursiv Java Basics - Anfänger-Themen 13
C Mittelwert berechnen Java Basics - Anfänger-Themen 5
L Brauch Mittelwert jeweils 3 Zahlen die durch 20 Wiederholungen geteilt werden Java Basics - Anfänger-Themen 17
G Mittelwert Java Basics - Anfänger-Themen 31
K Frage wegen Mittelwert Java Basics - Anfänger-Themen 32
B Notenauswertung: Einlesen der Anzahl, Bildung Mittelwert Java Basics - Anfänger-Themen 8
P Mittelwert, Datei einlesen. ich verzweifle Java Basics - Anfänger-Themen 3
N Mittelwert (fast fertig, nur noch 2 fehler ;-) ) Java Basics - Anfänger-Themen 14
M Programm soll n Zahlen von der Tastatur lesen(Mittelwert) Java Basics - Anfänger-Themen 8

Ähnliche Java Themen

Neue Themen


Oben