Maximum berechnen.

hello_autumn

Mitglied
Habe eine Aufgabe wo ich mein Maximum berechnen soll. Also ich gebe viele Zahlen ein und dann soll das Programm die größte Zahl herauspicken und anzeigen. So langsam denke ich verstehe ich die Rekursion... Aber irgendwas stimmt nicht ganz:

Java:
import java.util.Scanner;

public class Maximum{

	public static int maximum(int x, int temp) {
		
		
		if (x==0) {
			return maximum; 
		}
		else if (x>temp) { 
		return temp;
		}
		else {
		return x;
		}
		
	}

	public static void main(String args[]) {
		Scanner scan = new Scanner(System.in);
		
		int x = scan.nextInt();
		int temp = scan.nextInt();
		System.out.println(maximum(x));
	}
}

Irgendwie verstehe ich das nicht, wie ich die weiteren Zahlen verstauen soll. Also dachte ich da an etwas temporäres... Die Variable temp.

Ah ja! Und die 0 soll das Prgramm beenden, also die Eingabe. Deswegen mein if x== 0...
 
Zuletzt bearbeitet:

JCODA

Top Contributor
also für mehr als eine Zahl brauchst du ein Array. Deine Rekursion musst du dann dieses array übergeben.

und für die eingabe von mehren dingen benötigst du eine schleife ... oder eine zweite rekursion ... wobei es mit einer schleife einfacher wäre und ggf. kann es leichter sein, wenn du zunächst eingeben lässt, wie viele zahlen eingegeben werden sollen, damit du die array größe festlegen kannst

... ja das zitat wollte ich zunächst schreiben, aber es geht einfacher ...
du musst deine temp variable ja jedes mal neu einlesen, d.h. diesesmal kommt die abfrage in die rekursion.
 

hello_autumn

Mitglied
Okay... jetzt habe ich irgendwie alles kaputt gemacht...

Java:
import java.util.Scanner;

public class Maximum{

	public static int maximum(int x, int temp) {
		
		temp = scan.nextInt();
		
		if (temp == 0) {
			return maximum; 
		}
		else if (x>temp && x>0) { 
		return x;
		}
		else {
		return temp;
		}
		
	}

	public static void main(String args[]) {
		Scanner scan = new Scanner(System.in);
		
		int x = scan.nextInt();
		
		
		System.out.println(maximum(x, scan));
	}
}

Warum kann der beim compilieren die Variable scan.nextInt nicht finden??
 

njans

Top Contributor
Weil die Variable scan nur in der main Methode deklariert ist.

Wäre es nicht viel einfacher am Anfang alle Zahlen einzulesen und dann in ein Array/Liste zu packen?
 

hello_autumn

Mitglied
Ich hab leider eine Aufgabe, wo ich alle Zahlen ganz einfach eingebe und am Ende kommt dann nur eine Zahl raus. Also die größte. Und Rekursion soll mit rein.

Kann man denn Rekursion und Arrays zusammen packen?
 

Flown

Administrator
Mitarbeiter
Kann man mit Arrays machen. Ich hab dir mal eine Analogie gebastelt. Meine Methode gibt dir den längsten String aus einem Array zurück:

Java:
public class Test {
  public static void main(String... args) {
    String t = "";
    String[] testString = new String[10];
    for (int i = 0; i < testString.length; i++) {
      t += i;
      testString[i] = t;
    }
    for (String s : testString) {
      System.out.println(s);
    }
    System.out.println("- Longest string -");
    System.out.println(longestString(testString));
  }
  
  public static String longestString(String[] array) {
    return longestString(array, 0, null);
  }
  
  private static String longestString(String[] array, int i, String curMax) {
    if (i >= array.length) {
      return curMax;
    }
    if (curMax == null) {
      curMax = array[i];
    } else if (array[i] != null) {
      curMax = curMax.length() >= array[i].length() ? curMax : array[i];
    }
    return longestString(array, i + 1, curMax);
  }
}
 

minzee

Bekanntes Mitglied
Dein Programm entspricht nicht ganz dem divide&conquer-Prinzip, Flown.

Bei dem Prinzip geht es darum, etwas komplexes so weit zu vereinfachen, bis man auf einfache Art und Weise das machen kann, was man eigentlich für das Gesamte beabsichtigt. D. h. man müsste gemäß dieses Prinzips das Array so lange reduzieren, bis nur noch ein einziges Element übrig bleibt (das ist die Abbruchbedingung für die Rekursion). Und genau dieses Element wäre dann der erste Maximumwert der Rekursion, der dann von der Methode zurückgegeben wird. Was ich damit sagen will: Das curMax-Argument braucht man nicht.

Aber eigentlich finde ich das ziemlich unsinnig, das rekursiv zu programmieren. Ich vermute, das ist nur zu Übungszwecken, stimmt das? :)
 
Zuletzt bearbeitet:

njans

Top Contributor
Minzee, hier hat niemals jemand irgendwas von D&C gesagt. Hier geht es einfach nur um die Lösung eines Problems mittels Rekursion.
 

njans

Top Contributor
Das kann man sicherlich machen, hat aber mit der Aufgabe hier nichts zu tun. Und dir Vertrauen, werde ich nicht, da ich dich nicht kenne.
 

minzee

Bekanntes Mitglied
Ich würde es so machen:
Java:
class Main
{   
   private static int max(int[] values, int i)
   {
      if(i <= 0) // Abbruchbedingung
      {
         return values[0]; // erster Maximum-Wert
      }
      int max = max(values, i - 1);
      return (values[i] > max) ? values[i] : max;
   }
   public static void main(String[] args) 
   {   
      int[] values = {100, 20, 3, 4, 5};
      int max = max(values, values.length - 1);
      System.out.println(max);
   }
}
 

Flown

Administrator
Mitarbeiter
@Minzee:
Mein Programm war nur ein Beispiel für eine schnelle Rekursion, kein Hintergedanken zu Divide&Conquer und es war vor allem eine Analogie!
[edit]Aber was noch wichtiger ist, diese Rekursion ist eine Emulation für eine Schleife mehr nicht.[/edit]

Minzee, was ist wenn dein Array leer ist?
 
Zuletzt bearbeitet:

minzee

Bekanntes Mitglied
Weiß nicht. Die Frage ich hatte ich mich zuvor auch gestellt. Wirft man dann eine Exception? Ist nichts da, kann man auch kein max bestimmen, oder?
 
Zuletzt bearbeitet:

hello_autumn

Mitglied
Also erst mal danke fürs antworten!
Ich komme leider erst heute wieder zu meinen Aufgaben :( Ich meide diese...

@ minzee: Leider muss ich die Rekursion in der Übung anwenden. Klar könnte ich etwas anderes machen, aber In der Aufgabe will der Prof eine Rekusion. Okay, ich versuche es dann....

Aktuell stehe ich hier:

Java:
import java.util.Scanner;

public class Maximum{

	public static int maximum(int x, int temp, scan) {
		
		temp = scan.nextInt();
		
		if (temp == 0) {
			return x; 
		}
		else if (x>temp && x>0) { 
		return x;
		}
		else {
		return temp;
		}
		
	}

	public static void main(String args[]) {
		Scanner scan = new Scanner(System.in);
		
		int x = scan.nextInt();
		
		
		System.out.println(maximum(x, scan));
	}
}
 

Flown

Administrator
Mitarbeiter
Simple Frage an dich. Musst du jeweils in der Rekursion Zahlen einlesen oder werden die Zahlen per Array an die Rekursion geliefert?
 

hello_autumn

Mitglied
Also die Zahlen werden eingelesen. Und das Programm fragt immer weiter. Erst wenn ich meine Zahlen eingebeben habe, dann spuckt der die größte aus.

Verstehe nicht ganz deine Frage.
 

Flown

Administrator
Mitarbeiter
Naja es ist recht ungewöhnlich maximum "online" zu berechnen. Normalerweise will man das Maximum aus einem Bestand (resp. Array) wissen.

Ich helf dir mal ein bisschen weiter:

Java:
public static int maximum(Scanner scanner) {
  int nr = scanner.nextInt();
  if(nr == 0) return Integer.MIN_VALUE;
  int rekResult = maximum(scanner);
  return /*TODO: max zwischen rekResult und nr zrückliefern*/;
}
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
V Maximum berechnen ... Java Basics - Anfänger-Themen 20
M Maximum, Minimum und Mittelwert berechnen Java Basics - Anfänger-Themen 25
H Minimum und Maximum ausgeben lassen Java Basics - Anfänger-Themen 7
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
K Maximum Suchen Array Java Basics - Anfänger-Themen 6
R Erste Schritte Minimum und Maximum in Array finden Java Basics - Anfänger-Themen 29
D VM Argumente - Das Maximum rausholen Java Basics - Anfänger-Themen 19
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
A Felder- Minimum/Maximum Java Basics - Anfänger-Themen 2
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
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
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
M OOP Brüche nicht richtig berechnen Java Basics - Anfänger-Themen 3
V Durchschnittliche Volatility in Prozent für 4 Stunden berechnen Java Basics - Anfänger-Themen 14
T Fibonacci mit einer Hilfsmethode berechnen Java Basics - Anfänger-Themen 10
laxla123 Quersumme berechnen Java Basics - Anfänger-Themen 1
I For Schleife Summe berechnen Java Basics - Anfänger-Themen 13
S Vollmond berechnen und ausgeben Java Basics - Anfänger-Themen 12
S Vollkommene Zahl berechnen und ausgeben Java Basics - Anfänger-Themen 16
A Berechnen Moor Nachbarschaft Java Basics - Anfänger-Themen 5
E Geburtstag im Schaltjahr berechnen Java Basics - Anfänger-Themen 24
Lion.King Schaltjahr berechnen Java Basics - Anfänger-Themen 31
E Alter (Laufzeit) berechnen Java Basics - Anfänger-Themen 11
I Zuschläge berechnen Java Basics - Anfänger-Themen 15
L mit Fakultät mathematische Formel berechnen Java Basics - Anfänger-Themen 5
TanTanIsTrying Durschnitt berechnen von eingegebener Zahl bis 1 heruntergezählt Java Basics - Anfänger-Themen 9
L Präfix berechnen Java Basics - Anfänger-Themen 33
F Abstand zwischen zwei Objekten berechnen wie? Java Basics - Anfänger-Themen 1
Aemulit Java Schaltjahr berechnen Code Java Basics - Anfänger-Themen 7
Poppigescorn Quersumme Berechnen mit einer While Schleife Java Basics - Anfänger-Themen 13
I Potenz berechnen mit for-Schleife Java Basics - Anfänger-Themen 3
A Standardabweichung in Java berechnen Java Basics - Anfänger-Themen 10
H Gesamtabweichung mit Array berechnen Java Basics - Anfänger-Themen 2
G Java Rabatt berechnen Java Basics - Anfänger-Themen 8
V Rückgeld berechnen Java Basics - Anfänger-Themen 6
eleonori Durchschnitt aller Werte eines Baums berechnen Java Basics - Anfänger-Themen 5
Ianatrix Zahlen von a bis b berechnen Java Basics - Anfänger-Themen 7
L Max, min, Summe und Durchschnitt berechnen Java Basics - Anfänger-Themen 4
L Anhalteweg berechnen Java Basics - Anfänger-Themen 6
Aeon Erste Schritte Preise berechnen mit do-while Java Basics - Anfänger-Themen 9
M Quadratwurzel berechnen Java Basics - Anfänger-Themen 8
V Wachstum berechnen und in Ist-Formel verwenden Java Basics - Anfänger-Themen 5
N Variable aus anderen Variablen in statischer Klasse berechnen/abspeichern? Java Basics - Anfänger-Themen 4
M Abschreibungsplan berechnen Java Basics - Anfänger-Themen 23
V Gehalt berechnen in Java Java Basics - Anfänger-Themen 6
justemii Gehalt berechnen - Aufgabe Java-Programm Java Basics - Anfänger-Themen 9
L Anzahl der benachbarten Minen berechnen und setzen Java Basics - Anfänger-Themen 15
J Array Speicherplatz berechnen Java Basics - Anfänger-Themen 35
H Eingabedaten berechnen Java Basics - Anfänger-Themen 9
B Tranportkosten berechnen mit unterschiedlichen MwSt Java Basics - Anfänger-Themen 9
L Anzahl der Paare deren Summe = 0 ergibt berechnen Java Basics - Anfänger-Themen 0
V Erste Schritte Berechnen von Sinus; sin(x) ohne Math.* Java Basics - Anfänger-Themen 1
J Hilfe bei Java Aufgabe (Restschuld berechnen) Java Basics - Anfänger-Themen 11
N Ein Datum berechnen Java Basics - Anfänger-Themen 3
T Sparplan berechnen Java Basics - Anfänger-Themen 4
F Abstand zum Durchschnitt von 5 Zahlen berechnen... Java Basics - Anfänger-Themen 16
B java.util.Date berechnen Java Basics - Anfänger-Themen 11
P Mittelwert Arrayelemente berechnen Fehler Java Basics - Anfänger-Themen 5
CptK Best Practice Schussparabel berechnen Java Basics - Anfänger-Themen 3
T Modulo / Pow berechnen Java Basics - Anfänger-Themen 4
E Statistische Kennzahlen berechnen Java Basics - Anfänger-Themen 2
F Switch Case Modulo berechnen Java Basics - Anfänger-Themen 12
B mehrere Werte mit scanner und while schleife einlesen, max berechnen bzw addieren Java Basics - Anfänger-Themen 2
C Preis berechnen mit Java Java Basics - Anfänger-Themen 4
B Zahl in String abspeichern und später berechnen Java Basics - Anfänger-Themen 15
N Best Practice Image recognition fuzzy Superhash berechnen Java Basics - Anfänger-Themen 1
Dawinartor Erste Schritte Schaltjahr berechnen Java Basics - Anfänger-Themen 1
L Pi berechnen Java Basics - Anfänger-Themen 1
CptK Term (als String) berechnen und ausgeben Java Basics - Anfänger-Themen 10
L Den Winkel zwischen zwei Vektoren berechnen! Java Basics - Anfänger-Themen 2
J Variablen arithmetischen Mittelwert berechnen Java Basics - Anfänger-Themen 5
K Matrixen berechnen nach Worker Master Paradigma mit Threads Java Basics - Anfänger-Themen 4
R Winkel berechnen bzw. Geraden sortieren Java Basics - Anfänger-Themen 33
I Schnittpunkt zweier Geraden berechnen Java Basics - Anfänger-Themen 25
M Erste Schritte Mittelwert berechnen -> Methode in der Methode? Java Basics - Anfänger-Themen 14
S Compiler-Fehler Schaltjahr berechnen Java Basics - Anfänger-Themen 5
B Fakultätsfunktion Rekursiv Berechnen aber mit Array Java Basics - Anfänger-Themen 10
S Durchschnitt berechnen aus zwei Textfeldern Java Basics - Anfänger-Themen 21
D Summe berechnen mit verändertem Wert aus Schleife Java Basics - Anfänger-Themen 1
R Liga Berechnen Java Basics - Anfänger-Themen 1
P Klassen Berechnen mehrerer Map-Werte Java Basics - Anfänger-Themen 13
R Fussballtabellen berechnen Java Basics - Anfänger-Themen 12
J Fibonacci -Folge rekursiv berechnen Java Basics - Anfänger-Themen 18
J Durchschnitt jeder Zeile und und Spalte in einem 2D Arrays berechnen Java Basics - Anfänger-Themen 6
F ISBN Prüfziffer berechnen Java Basics - Anfänger-Themen 17
F Die Teilersumme einer Eingabe berechnen Java Basics - Anfänger-Themen 11
S Negafibonacci Folge berechnen Java Basics - Anfänger-Themen 24

Ähnliche Java Themen

Neue Themen


Oben