Problem mit for schleife/ try-catch block

EinMensch

Mitglied
Hallo allerseits!

Ich bin Anfänger, was Java angeht, und ich habe ein Problem mit einem Code, den ich erstellt habe: Er funktioniert nicht.

Also, es geht um folgendes: Ich habe 3 Silos mit unterschiedlichen Zementbestandteilen. Wöchentlich werden aus den Silos unterschiedliche Anteile entnommen.
Ich soll ein Programm erstellen, was die Silos und die Entnahme pro Woche simuliert und ausgibt, wann ein Silo nach X Wochen aufgefüllt werden muss (unter 20% bei 40m³ Gesamtvolumen).

Bisher hab ich es so gelöst:

2 Packages, eines mit der main, eines mit 5 Klassen: Eine abstrakte (Elternklasse) Silo, davon drei abgeleitete Kindklassen (Silo 1, Silo 2, Silo 3; sie unterscheiden sich geringfügig), die abhängig von der aktuellen Woche den jeweiligen Füllstand berechnen.
Die 5. Klasse ist eine Exception (die funktioniert).

Mein eigentliches Problem ist in der main methode. Ich habe einen try-catch block, der so aussieht:

Java:
try {
for (int i = 0; i < 10; i++) {

a.setWoche(i); //a ist Silo A
b.setWoche(i);
c.setWoche(i);

}
} catch (NachfuellBedarf e) { //Nachfuellbedarf ist die Eception Klasse
System.out.println(e.getMessage());
System.out.println("Nach " + i + " Wochen.");

}

Die set Methode bezieht sich auf einen int i, der oben erzeugt wurde. Ich habe nicht so die Ahnung von Set Methoden, aber diese hier bezieht sich auf folgendes in der jeweiligen Silo Kindklasse:


public void setWoche(double Fuellstand2) throws NachfuellBedarf {
this.Fuellstand2 = Fuellstand2;

Java:
if (berechneFuellstandA() <= 20) {
throw new NachfuellBedarf("Der Fuellstand in Silo A beträgt "
					+ berechneFuellstandA());
}

Mein Problem ist scheinbar, dass die Schleife nicht funktioniert - Wenn ich auf run klicke, gibt das Programm kein Ergebnis aus. Ändere ich den Wert 20 (% Füllstand) aber auch etwas über 100, gibt er mir den Wert nach einer Woche aus (67,5%), hört dann auch auf... Wahrscheinlich braucht ihr mehr Infos, aber hier alles reinzukopieren würde den Rahmen sprengen, oder?
Sorry für meine schlechten Kenntnisse, bin Anfänger. Über Tipps währe ich sehr dankbar!
 
G

Gast2

Gast
Nen paar mehr infos wären schon nicht verkehrt.
Poste zumindest mal deine Silo klasse.
 

EinMensch

Mitglied
Okay, ich poste einfach mal die Klasse Silo:

Java:
 package anteile;

abstract public class Silo {
	protected double GesamtVolumen;
	protected double EntnahmeAnteilHR;
	protected double EntnahmeAnteilL;
	protected double EntnahmeAnteilB;

	public Silo(double GesamtVolumen,
			double EntnahmeAnteilHR, double EntnahmeAnteilL,
			double EntnahmeAnteilB) {
		this.GesamtVolumen = GesamtVolumen;
		this.EntnahmeAnteilHR = EntnahmeAnteilHR;
		this.EntnahmeAnteilL = EntnahmeAnteilL;
		this.EntnahmeAnteilB = EntnahmeAnteilB;
	}
	
	
}



Und noch die Klasse SiloA: Das Silo besteht aus 2 Füllkammern mit jeweils 40m³ Volumen.

Java:
package anteile;

public class SiloA extends Silo {
	private double Fuellstand1 = 100;
	private double Fuellstand2 = 100;

	public SiloA(double GesamtVolumen, double EntnahmeAnteilHR,
			double EntnahmeAnteilL, double EntnahmeAnteilB,
			double berechneFuellstand1, double Fuellstand2) {
		super(GesamtVolumen, EntnahmeAnteilHR, EntnahmeAnteilL, EntnahmeAnteilB);
		this.Fuellstand1 = Fuellstand1;
		this.Fuellstand2 = Fuellstand2;

	}

	public double berechneEntnahmeA() {
		return (5 * this.EntnahmeAnteilHR) + (25 * this.EntnahmeAnteilL)
				+ (32 * this.EntnahmeAnteilB);

	}

	public double berechneFuellstandA() {
		return (this.GesamtVolumen - (this.berechneEntnahmeA())) * 100
				/ this.GesamtVolumen;
	}

	public double Fuellstand1() {
		if (berechneFuellstandA() > 50) {
			return (this.GesamtVolumen / 2 - (this.GesamtVolumen - this
					.berechneFuellstandA())) * 100 / 40;

		} else {
			return 0;
		}
	}

	public double Fuellstand2() {
		if (berechneFuellstandA() < 50) {
			return (this.GesamtVolumen / 2 - (this.GesamtVolumen - this
					.berechneFuellstandA())) * 100 / 40;

		} else {
			return 100;
		}
	}

	public void setWoche(double Fuellstand2) throws NachfuellBedarf {
		this.Fuellstand2 = Fuellstand2;

		if (berechneFuellstandA() <= 20) {
			throw new NachfuellBedarf("Der Fuellstand in Silo A beträgt "
					+ berechneFuellstandA());
		}

	}

}
 

parabool

Bekanntes Mitglied
müsstest den Code vllt. noch verbessern z.B. ungenutzte Variablen, Methoden, teilweise verwirrend.
Fachlogik in Exceptions behandeln finde ich auch nicht so günstig.

Zum Problem:
Die Methode setWoche hat den falschen Parameter (wird auch nicht verwendet) und
in der Berechnungsmethode bleibt der Wert auf Gesamtvolumen - 1*Abnahmemenge stehen,deshalb keine Ausgabe.

mögliche Lösung:

Java:
private int woche;

public void setWoche(int woche)
{
   this.woche = woche;
   ...
   ...
}

public double berechneFuellstandA()
{
   return (this.GesamtVolumen - (this.berechneEntnahmeA()*this.woche)) * 100 / this.GesamtVolumen;
}
 
Zuletzt bearbeitet:

EinMensch

Mitglied
Also die Schleife läuft nicht aufgrund eines falschen Parameters? Hm... Aber wie könnte ich die Schleife aufbauen? Wenn ichs so versuche wie du bekomm ich einen unreachable code...

Trotzdem danke!

Übrigens hier meine main methode...

Java:
 package anwendung;

import anteile.NachfuellBedarf;
import anteile.SiloA;
import anteile.SiloB;
import anteile.SiloC;

public class Anwendung {
	private static int i;

	public static void main(String[] arqs) {
		SiloA a = new SiloA(80, 0.20, 0.80, 0.10, 100, 100);
		SiloB b = new SiloB(40, 0.45, 0.20, 0.20, 100);
		SiloC c = new SiloC(40, 0.70, 0.0, 0.35, 100);

		try {
			for (int i = 0; i < 10; i++) {

				a.setWoche(i);
				b.setWoche(i);
				c.setWoche(i);

			}
		} catch (NachfuellBedarf e) {
			System.out.println(e.getMessage());
			System.out.println("Nach " + i + " Wochen.");

		}
	}
}
 

parabool

Bekanntes Mitglied
Der Methode setWoche wird ein int Wert übergeben (die laufende Woche) aber die Methode erwartet
einen double-Wert (Füllstand). Also vom Datentyp und auch inhaltlich nicht passend. Das meinte ich mit falschen Parameter.

Ausserdem ist in der Klasse Anwendung die Variable i doppelt definiert einmal oben als static und lokal in der Schleife.

Habe mal die relevanten Klassen geändert.

Java:
public class SiloA extends Silo {
    
    private int woche;
    public SiloA(double GesamtVolumen, double EntnahmeAnteilHR,
            double EntnahmeAnteilL, double EntnahmeAnteilB,
            double berechneFuellstand1, double Fuellstand2) {
        super(GesamtVolumen, EntnahmeAnteilHR, EntnahmeAnteilL, EntnahmeAnteilB);
    }
 
    public double berechneEntnahmeA() {
        return (5 * this.EntnahmeAnteilHR) + (25 * this.EntnahmeAnteilL)
                + (32 * this.EntnahmeAnteilB);
 
    }
 
    public double berechneFuellstandA() {
    	return (this.GesamtVolumen - (this.berechneEntnahmeA()*this.woche)) * 100 / this.GesamtVolumen;
    }
 
    public void setWoche(int woche) throws NachfuellBedarf 
    {
        this.woche = woche;     
        double  fs = berechneFuellstandA();      
        System.out.println("fs="+fs);       
        if (fs <= 20) {
            throw new NachfuellBedarf("Der Fuellstand in Silo A beträgt "
                    + berechneFuellstandA());
        }
    }
}
Java:
public class Anwendung {
    
    public static void main(String[] arqs) {
        SiloA a = new SiloA(80, 0.20, 0.80, 0.10, 100, 100);
        int i = 0;
        try {
            for (i = 0; i < 10; i++) {
 
            	System.out.println("i="+i);
                a.setWoche(i);
            
 
            }
        } catch (NachfuellBedarf e) {
        	
            System.out.println(e.getMessage());
            System.out.println("Nach " + i + " Wochen.");
 
        }
    }
}
 
Zuletzt bearbeitet:

EinMensch

Mitglied
Vielen Dank, es klappt jetzt einigermaßen! Noch ein bisschen Feinschliff und fertig, jetzt verstehe ich auch meinen Fehler und die Lösung. Merci
 

Landei

Top Contributor
Übrigens würde ich wärmstens empfehlen, [c]NachfuellBedarf[/c] in [c]NachfuellBedarfException[/c] o. ä. umzubenennen. Exceptions haben eine Sonderstellung und sollten deshalb als solche erkennbar sein.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
C Problem mit try-catch in Schleife Java Basics - Anfänger-Themen 15
M Problem bei verschachtelter for-Schleife bei zweidimensionalen Arrays Java Basics - Anfänger-Themen 3
xanxk Problem For-Schleife mit Charakter Java Basics - Anfänger-Themen 2
J Schleife Problem Java Basics - Anfänger-Themen 2
U Problem mit dem initialisieren meines Strings in einer Schleife Java Basics - Anfänger-Themen 5
S Doppel For Schleife mit Arrays - Problem bei der Ausgabe Java Basics - Anfänger-Themen 4
F Problem do while Schleife und Scanner Java Basics - Anfänger-Themen 2
A Kleines Abbruch-Problem mit Do-While-Schleife Java Basics - Anfänger-Themen 4
P Problem bei Fakultät mit "for"-Schleife Java Basics - Anfänger-Themen 12
D Textfield im Game ,Problem: while-Schleife Java Basics - Anfänger-Themen 1
S Problem mit for-Schleife Java Basics - Anfänger-Themen 4
D Problem mit Schleife / Newtonverfahren Java Basics - Anfänger-Themen 4
F Problem mit der While schleife und dem Scanner Java Basics - Anfänger-Themen 2
vodkaz For Schleife Verständnis Problem Java Basics - Anfänger-Themen 4
M For Schleife Problem Java Basics - Anfänger-Themen 2
S problem bei verschachtelter for-schleife Java Basics - Anfänger-Themen 5
F Problem mit for-Schleife Java Basics - Anfänger-Themen 4
L Nummern Generator (mit do-while Schleife) Problem Java Basics - Anfänger-Themen 7
B Problem mit for-Schleife Java Basics - Anfänger-Themen 4
C Problem mit Schleife Java Basics - Anfänger-Themen 3
Killerjo96 Erste Schritte Problem mit dem Sichern einer If Schleife Java Basics - Anfänger-Themen 5
F Problem Math.random in for-Schleife Java Basics - Anfänger-Themen 8
K Problem mit der while - Schleife Java Basics - Anfänger-Themen 9
M Problem bei Schleife + Methode Java Basics - Anfänger-Themen 2
C Euler'sche Zahl berechnen, Problem bei for-schleife Java Basics - Anfänger-Themen 4
D For Schleife und DrawString - Problem Java Basics - Anfänger-Themen 20
G problem mit while schleife Java Basics - Anfänger-Themen 8
A For-Schleife Problem Java Basics - Anfänger-Themen 11
J Problem - Schleife Java Basics - Anfänger-Themen 16
V Problem mit einer While Schleife Java Basics - Anfänger-Themen 8
S Unverstandenes Problem mit for schleife Java Basics - Anfänger-Themen 2
A If-Schleife spinnt - ganz einfach Code - Riesen Problem :) Java Basics - Anfänger-Themen 9
Luk10 Problem mit For-Schleife Java Basics - Anfänger-Themen 2
F Problem mit einer Schleife Java Basics - Anfänger-Themen 10
A Problem mit vereinfachter For-Schleife Java Basics - Anfänger-Themen 5
O Problem mit For-schleife Java Basics - Anfänger-Themen 3
O Methode - Problem mit Subtraktion in einer while-Schleife Java Basics - Anfänger-Themen 2
A Problem mit BigInteger und Schleife Java Basics - Anfänger-Themen 13
S Problem mit Schleife - Objektwert aendert sich nach erstellung Java Basics - Anfänger-Themen 17
M Problem bei Schleife Java Basics - Anfänger-Themen 28
_SeiA_ Suche Schleife/Algorythmus für ein Problem Java Basics - Anfänger-Themen 3
J FOR-Schleife Problem Java Basics - Anfänger-Themen 10
M Problem mit der For Schleife (else funzt nicht richtig) Java Basics - Anfänger-Themen 10
G Problem mit If und integrierter Schleife Java Basics - Anfänger-Themen 2
ChackZz Problem mit for-Schleife bei der Primzahlberechnung Java Basics - Anfänger-Themen 8
J problem mit schleife Java Basics - Anfänger-Themen 31
M Problem bei Do. While schleife Java Basics - Anfänger-Themen 10
S problem mit "for" schleife Java Basics - Anfänger-Themen 12
X Anfänger Problem mit Schleife Java Basics - Anfänger-Themen 3
R Problem mit for-Schleife Java Basics - Anfänger-Themen 6
Z Problem mit Schleife und korrekter Ausgabe: Java Basics - Anfänger-Themen 13
N kleines Problem mit meiner Schleife Java Basics - Anfänger-Themen 8
G Problem mit einfacher For-Schleife und Double Wert Java Basics - Anfänger-Themen 4
megachucky GUI-Problem in Verbindung mit while-Schleife und Listener Java Basics - Anfänger-Themen 4
K Verständnis Problem bei Server/Client Java Basics - Anfänger-Themen 2
I WildFily - unterschiedliche Libs im Projekt verursachen Problem Java Basics - Anfänger-Themen 11
imocode Vererbung Problem mit Vererbung Java Basics - Anfänger-Themen 2
L Taschenrechner Problem Java Basics - Anfänger-Themen 4
I Applikationsserver (WildFly) - Zugriff auf Ressourcen.. Problem mit Pfade Java Basics - Anfänger-Themen 10
A ScheduledExecutorService problem Java Basics - Anfänger-Themen 7
marcelnedza Problem mit Weltzuweisung, JavaKarol Java Basics - Anfänger-Themen 13
XWing Methoden rückgabe Problem? Java Basics - Anfänger-Themen 6
M Erste Schritte Collatz Problem max int Java Basics - Anfänger-Themen 3
C GLOOP Problem beim Erstellen der Kamera Java Basics - Anfänger-Themen 9
nelsonmandela Problem bei Ausgabe einer Switch - Case Funktion Java Basics - Anfänger-Themen 5
frager2345 Problem mit Methode Java Basics - Anfänger-Themen 4
L Problem bei Rechnung mit Math.pow Java Basics - Anfänger-Themen 13
A Thread-Schreibe-Lese-Problem Java Basics - Anfänger-Themen 4
SUPERTJB return Problem Java Basics - Anfänger-Themen 3
sserio BigInteger Problem Java Basics - Anfänger-Themen 4
JordenJost Taschenrechner problem Java Basics - Anfänger-Themen 5
K Problem mit "Random" Java Basics - Anfänger-Themen 5
S Datei anlegen Problem! Groß- und Kleinschreibung wird nicht unterschieden Java Basics - Anfänger-Themen 4
sserio Problem beim Anzeigen Java Basics - Anfänger-Themen 5
L Unbekanntes Problem mit 2d Array Java Basics - Anfänger-Themen 6
sserio Liste erstellt und ein Problem mit dem Index Java Basics - Anfänger-Themen 8
sserio Schwimmen als Spiel. Problem mit to String/ generate a card Java Basics - Anfänger-Themen 4
D Problem mit der Erkennung von \n Java Basics - Anfänger-Themen 2
milan123 das ist meine aufgabe ich hab das problem das bei mir Wenn ich die Richtung der Linien verändern will und drei davon sind richtig, verändere ich die 4 Java Basics - Anfänger-Themen 3
M Verständins Problem bei Aufgabe Java Basics - Anfänger-Themen 4
HeiTim Problem mit der Kommasetzung an der richtigen stelle Java Basics - Anfänger-Themen 59
Temsky34 Problem mit dem Code Java Basics - Anfänger-Themen 17
P Problem mit Calendar.getDisplayName() Java Basics - Anfänger-Themen 8
C Problem mit mehreren Methoden + Scanner Java Basics - Anfänger-Themen 5
P Datei einlesen, nach Begriff filtern und in Datei ausgeben. Problem Standardausgabe über Konsole Java Basics - Anfänger-Themen 19
M Problem mit Klassenverständnis und Button Java Basics - Anfänger-Themen 8
EchtKeineAhnungManchmal hallo habe ein Problem mit einer Datei -> (Zugriff verweigert) Java Basics - Anfänger-Themen 4
H Problem mit Verzweigungen Java Basics - Anfänger-Themen 6
H Problem mit Rückgabewert Java Basics - Anfänger-Themen 7
josfe1234 JAVA FX problem Java Basics - Anfänger-Themen 3
A Code Problem Java Basics - Anfänger-Themen 6
Henri Problem von Typen Java Basics - Anfänger-Themen 7
J Problem mit "ArrayIndexOutOfBoundsException" Java Basics - Anfänger-Themen 11
K jackson Mapping - Problem mit Zeitzonen Java Basics - Anfänger-Themen 10
B Threads Problem mit mehreren Threads Java Basics - Anfänger-Themen 38
I Output BigDecimal anstatt double / Problem beim Rechnen Java Basics - Anfänger-Themen 16
D Schleifen Problem Java Basics - Anfänger-Themen 2
H So viele Fehlermeldungen, dass ich nicht weiß wo das Problem ist. Java Basics - Anfänger-Themen 6
J JAVA-Problem blockiert MEDIATHEKVIEW Java Basics - Anfänger-Themen 13
T Problem mit Lehrzeichen und String bei einfacher Chiffre Java Basics - Anfänger-Themen 8

Ähnliche Java Themen

Neue Themen


Oben