WinFuture-Forum.de: Java - JOptionPane.showInputDialog - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
Seite 1 von 1

Java - JOptionPane.showInputDialog


#1 Mitglied ist offline   mind_it 

  • Gruppe: aktive Mitglieder
  • Beiträge: 87
  • Beigetreten: 28. Oktober 10
  • Reputation: 0
  • Geschlecht:Männlich

geschrieben 06. Dezember 2010 - 12:47

Hallo,

ich versuche ein ganz einfaches Programm mit JOptionPane zu schreiben.
Im Moment sieht das so aus:

import javax.swing.JOptionPane;

public class Aufgabe1 {

	public static void main(String[] args) {

		int k=0;
		String s = JOptionPane.showInputDialog ("Bitte geben Sie hier den Wert Ihrer Ware ein:");
				
		k = Integer.parseInt (s);
		JOptionPane.showMessageDialog (null, "Der Wert Ihrer Ware beträgt: " + k + " €");
		
		System.out.println ("Der Wert Ihrer Ware beträgt: " + k + " €");

	}

}


Jetzt sind die Fragen:

Wie kann ich einen "JOptionPane.showInputDialog" erstellen der nur ein Button hat? (soll dann so aussehen wie eine "showMessageDialog" nur mit OK)

Wie kann ich einer "JOptionPane.showInputDialog" sagen, dass der Abbrechen-Button das Programm beendet? Bis Jetzt kommt dann immer Fehlercode, der wie folgt aussieht, mit dem ich aber nichts anfangen kann:

Exception in thread "main" java.lang.NumberFormatException: null
	at java.lang.Integer.parseInt(Unknown Source)
	at java.lang.Integer.parseInt(Unknown Source)
	at Aufgabe1.main(Aufgabe1.java:11)


Da ich nicht viel Ahnung habe, würde ich es toll finden, wenn ihr mir helfen könntet =)

Grüße

mind_it
0

Anzeige



#2 Mitglied ist offline   -__-Cartman-__- 

  • Gruppe: aktive Mitglieder
  • Beiträge: 35
  • Beigetreten: 20. November 06
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:Frankfurt/Main

geschrieben 09. Dezember 2010 - 13:21

Hallo erstmal.

Fangen wir mal mit deiner Exception an. Diese entsteht, weil du an dieser Stelle
k = Integer.parseInt (s);

versuchst, den zurückgegebenen null-Wert in ein Integer zu parsen, den die Methode nicht parsen kann.

Zitat

int java.lang.Integer.parseInt(String s) throws NumberFormatException

Parses the string argument as a signed decimal integer. The characters in the string must all be decimal digits, except that the first character may be an ASCII minus sign '-' ('\u002D') to indicate a negative value. The resulting integer value is returned, exactly as if the argument and the radix 10 were given as arguments to the parseInt(java.lang.String, int) method.

Parameters:
s a String containing the int representation to be parsed
Returns:
the integer value represented by the argument in decimal.
Throws:
NumberFormatException - if the string does not contain a parsable integer.


Ich habe mal zwei alternative Lösungen für dein Problem erstellt. Die erste Lösung beendet das Programm nicht, sondern ruft beim Drücken des Abbrechen-Buttons bzw. Schließen via Titelleiste einfach ein neues JOptionPane auf.

Lösung 1:
import javax.swing.JOptionPane;

public class Aufgabe1a {

	private static String dontAllowCancelOrNullValue(String s) {
		if (s != null && !s.isEmpty()) {
			return s;
		} else {
			return dontAllowCancelOrNullValue(JOptionPane.showInputDialog("Bitte geben Sie hier den Wert Ihrer Ware ein:"));
		}
	}
	
	public static void main(String[] args) {
		int k=0;
		String s = JOptionPane.showInputDialog("Bitte geben Sie hier den Wert Ihrer Ware ein:");
		dontAllowCancelOrNullValue(s);
		try {
			k = Integer.parseInt(s);
		} catch (NumberFormatException e) {
			JOptionPane.showMessageDialog(null, "Fehler: Keine gültige Zahl.", "Fehler", JOptionPane.ERROR_MESSAGE);
		}
		JOptionPane.showMessageDialog(null, "Der Wert Ihrer Ware beträgt: " + k + " €");
		System.out.println ("Der Wert Ihrer Ware beträgt: " + k + " €");
	}
}


Die zweite Lösung schließt beim Drücken des Abbrechen-Buttons das Programm sofort.

Lösung 2:
import javax.swing.JOptionPane;


public class Aufgabe1b {
	
	public static void main(String[] args) {
		int k=0;
		String s = JOptionPane.showInputDialog ("Bitte geben Sie hier den Wert Ihrer Ware ein:");
		if (s == null || s.isEmpty()) {
			return; // Hier wird das Programm abgebrochen.
		} else {
			k = Integer.parseInt (s);
			JOptionPane.showMessageDialog (null, "Der Wert Ihrer Ware beträgt: " + k + " €");
			System.out.println ("Der Wert Ihrer Ware beträgt: " + k + " €");
		}
	}
}


Wenn du ein JOptionPane nur mit einem OK-Button möchtest, musst du es soviel ich weiß selbst erstellen.

Dieser Beitrag wurde von -__-Cartman-__- bearbeitet: 09. Dezember 2010 - 13:22

0

Thema verteilen:


Seite 1 von 1

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0