Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Ich möchte in einem Quelletxt denn ihr unten sieht, eine exception einbauen der mir negative zahlen abfangen kann . Ich habe es mit if gemacht ahat mir aber nicht gefallen. Welche Exception-Klasse muß ich dafür benutzen. ?
mfg
kaper28
Code:
import javax.swing.JOptionPane;
public class WeinKlasse {
public static void main(String[] args) {
int alter;
double grundpreis;
double preisProFlasche;
{
try {
alter = Integer
.parseInt(JOptionPane
.showInputDialog("Bitte geben Sie den Alter des Weins ein : "));
grundpreis = Integer
.parseInt(JOptionPane
.showInputDialog("Bitte geben Sie den Grundpreis ein : "));
if (alter < 0 || grundpreis < 0) {
System.out.println("Bitte keine negative Zahlen ");
alter = 1;
grundpreis = 1;
System.out
.println("Alle beider werte wurden auf 1 zürückgesetzt");
System.exit(0);
} else {
preisProFlasche = alter * grundpreis;
System.out.println("Der Preis Beträgt :" + preisProFlasche
+ " Euro ");
}
}
catch (IllegalArgumentException e) {
System.out.println("Bitte geben Sie nur Zahlen an ");
}
}
}
}
da ist aber deine Variante besser. Exceptions sind dafür (un)vorhersehbare Programm-/Hardware-/Protokoll-/...-Fehler vorgesehen, nicht für falsche Benutzereingaben. Eine Möglichkeit das ganze noch benutzerfreundlicher zu machen ist, die Eingabedialoge selber zu schreiben und dabei ein FormattedTextField zu benutzen, da kannst einstellen, dass du z.B. nur positive Werte haben möchtest.
BTW: Ich würde hier keine Exception schmeißen, denn Exceptions, die einfach bis an die Runtime gehen und dann in die Konsole gekotzt werden, sind nicht gerade das, was ich als User-freundlich titulieren würde.
BTW: Ich würde hier keine Exception schmeißen, denn Exceptions, die einfach bis an die Runtime gehen und dann in die Konsole gekotzt werden, sind nicht gerade das, was ich als User-freundlich titulieren würde.
Naja, du schreibst eine Klasse, die von Exception oder von RuntimeException erbt. Die Details sind in jedem beliebigen Java-Lehrbuch erklärt. Online zum Beispiel in "Java ist auch eine Insel".
package package1;
public class ExcepionKlasse extends IllegalArgumentException {
/**
* die serialVersionUID wurde automatisch über Eclipse ergänzt
*/
private static final long serialVersionUID = 6034903258759501562L;
//der Standard-Konstruktor
ExcepionKlasse() {
super();
}
//der Konstruktor zur Übergabe einer Meldung
//er ruft über super den Konstruktor der Basisklasse auf
ExcepionKlasse(String meldung) {
super(meldung);
}
}
Code:
//die Klasse befindet sich im Package eindialogV2
package package1;
//für den Eingabedialog
import javax.swing.JOptionPane;
public class EingabeDialogV2 {
public static void main(String[] args) {
EingabeDialogV2 eingabe = new EingabeDialogV2();
eingabe.einlesen();
}
private static void einlesen() throws ExcepionKlasse {
int alter;
double grundpreis;
double preisProFlasche;
try {
alter = Integer
.parseInt(JOptionPane
.showInputDialog("Bitte geben Sie den Alter des Weins ein : "));
grundpreis = Integer.parseInt(JOptionPane
.showInputDialog("Bitte geben Sie den Grundpreis ein : "));
if (alter < 0 || grundpreis < 0) {
System.out.println("Bitte keine negative Zahlen eingeben");
System.out.println("Program wird beendet");
System.exit(0);
} else {
}
preisProFlasche = alter * grundpreis;
System.out.println("Der Preis Beträgt :" + preisProFlasche
+ " Euro ");
}
catch (IllegalArgumentException e) {
System.out.println("Bitte geben Sie nur Zahlen ein . ");
}
}
}
Ich meine so was , eine Exception Klasse und eine Main Klasse
Richtig in dem Sinne, das es compiliert: vermutlich schon; richtig in dem Sinne, tut es was du willst: nein. Du must die Exception noch auslösen, wenn eine negative Zahl eingegeben wurde. Exceptions löst man mit dem Schlüsselwort "throws" aus.