Endlosschleife... Warum?

Null-checker

Mitglied
Hi Leute!

Ich hab da mehrere Aufgaben für meine Schule zu erledigen und hab sie größtenteils lösen können bis auf "Kleinigkeiten" so wie hier. Ich hab eine Endlosschleife produziert und finde den Fehler nicht...

Danke schon mal vorab für alle Tipps 🙂



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

//		Lesen Sie 2 Intervallgrenzen und danach beliebig viele Zahlen (Abschluss mit 0) ein, 
//		und geben Sie aus, wie viele Zahlen kleiner als die untere Intervallgrenze, wie viele 
//		im Intervall und wie viele größer als die obere Intervallgrenze waren. 
//		(Die Zahlen müssen nicht aufgehoben werden).

		int grenzeo;
		int grenzeu;
		int z = 0;
		Scanner s = new Scanner(System.in);
		
		System.out.println("Eingabe der oberen Intervallgrenze");
		grenzeo = s.nextInt();
		
		System.out.println("Eingabe der unteren Intervallgrenze");
		grenzeu = s.nextInt();
		
		do{
			System.out.println("Zahl eingeben bitte! \nBeenden der Eingabe mit 0");
			z= s.nextInt();
		}
		while (z != 0);
		
		System.out.println("Auflistung der der Zahlen (unter der Untergrenze, zwischen den Intervallen,"
				+ "über der Obergrenze");
		
		System.out.println(vergleich(grenzeo, grenzeu, z));
		
	}

	public static int vergleich ( int grenzeo, int grenzeu, int z){
	
		int o = 0;
		int u = 0;
		int m = 0;
		
		if (z < grenzeu){
			u++;
		}
		else{
			if (z > grenzeo){
				o++;
			}
			else{
				m++;
			}
		}	
		return u / m / o;
	}
}
 
Zuletzt bearbeitet:
War ein erstklassiger Tipp 🙂

aber jetzt bekomme ich eine Fehlermeldung wegen meinem Unterprogramm:

Java:
Exception in thread "main" java.lang.ArithmeticException: / by zero
	at svoboda_5.Intervall.vergleich(Intervall.java:56)
	at svoboda_5.Intervall.main(Intervall.java:35)
 
ich will ja nicht "u dividiert durch m dividiert durch o" ausgeben sondern ich möchte, dass mir das Unterprogramm "vergleich" alle drei Variablen zurück liefern... Geht das nicht?

Die beiden Grenzen und z lasse ich vom User zu Beginn eingeben.
 
ich will ja nicht "u dividiert durch m dividiert durch o" ausgeben sondern ich möchte, dass mir das Unterprogramm "vergleich" alle drei Variablen zurück liefern... Geht das nicht?

Die beiden Grenzen und z lasse ich vom User zu Beginn eingeben.

Genau! Aber das machst du gerade! 🙂

Deine Methode gibt ein int zurück. Und das ist nunmal "ein einziger" Wert. Wenn du mehr willst musst du dir entweder deinen eigenen Datentyp schreiben oder, wie schon durch andere erwähnt, ein Array als Rückgabe definieren. Wenn du aber nur einen String haben willst, dann brauchst du natürlich einen String.

Java:
public static int[] vergleich ( int grenzeo, int grenzeu, int z){
   
        int o = 0;
        int u = 0;
        int m = 0;
        // o = index 0, u  = index 1, m = index 2
        int temp [] = new int[3];
        
       
        if (z < grenzeu){
           temp[1]+=1;
        }
        else{
            if (z > grenzeo){
                temp[0]+=1;
            }
            else{
                 temp[2]+=1;
            }
        }  
        return temp; // Wenn du nur String zurückgeben willst dann geht auch temp.toString();
    }
 
ein letztes Mal nerv ich dich noch, dann geb ichs auf...

ich hab das jetzt von dir übernommen und dann schaut meine Ausgabe so aus:

Auflistung der der Zahlen:
unter der Untergrenze, zwischen den Intervallen, über der Obergrenze:
[I@1f26605
 
Du gibst den Integer-Array aus...

Folgendes willst du wohl haben:

Java:
 System.out.println("Auflistung der der Zahlen (unter der Untergrenze, zwischen den Intervallen,"
                + "über der Obergrenze");
 int[] result = vergleich(grenzeo, grenzeu, z)
        System.out.println(result[0] + " | " + result[1] + " | " + result[2]);
 
ein letztes Mal nerv ich dich noch, dann geb ichs auf...

ich hab das jetzt von dir übernommen und dann schaut meine Ausgabe so aus:

Auflistung der der Zahlen:
unter der Untergrenze, zwischen den Intervallen, über der Obergrenze:
[I@1f26605

Oh, sorry mein Fehler!! Bei einer ArrayList ging das mit toString() ! 🙂

Mach das so wie KSG9|sebastian es geschrieben hat! Sorry🙂
 

Neue Themen


Zurück
Oben