2016-08-30 3 views
0

Ich beginne gerade mit Java und Programmierung im Allgemeinen. Könnte mir bitte jemand erklären, warum das zweite Dialogfeld nicht angezeigt wird, nachdem ich die Informationen für das erste eingegeben habe?2. JOptionPane wird nicht angezeigt

Danke!

// Java Practice 

import javax.swing.JOptionPane; 
import java.util.Scanner; 

public class DialogTest 
{ 
    public static void main(String [] args) 
    { 
     Scanner keyboard = new Scanner(System.in); 

     String firstname; 
     String lastname; 
     int age; 

     JOptionPane.showInputDialog("What is " + 
            "your first name?"); 
     firstname = keyboard.nextLine(); 

     JOptionPane.showInputDialog("What is " + 
            "your last name?"); 
     lastname = keyboard.nextLine(); 

     JOptionPane.showInputDialog("How old are you?"); 
     age = keyboard.nextInt(); 

     JOptionPane.showMessageDialog(null, "I see, so your name is: " + firstname + lastname + " and you are" + age + " years old."); 

     System.exit(0); 
    } 
} 

Antwort

2

JOptionPane.showInputDialog() liefert ein String, die den Wert von dem Benutzer eingegeben enthält. Statt die Scanner Klasse zu verwenden, speichern den Rückgabewert des Methodenaufruf in Ihre Variablen:

String firstname, lastname, age; 

firstname = JOptionPane.showInputDialog("What is " + 
           "your first name?"); 

lastname = JOptionPane.showInputDialog("What is " + 
           "your last name?"); 

age = JOptionPane.showInputDialog("How old are you?"); 

JOptionPane.showMessageDialog(null, "I see, so your name is: " + firstname + lastname + " and you are" + age + " years old."); 
+0

Das hat funktioniert, danke! –

0

Sie brauchen nicht beide JOptionPane und Scanner. Sie brauchen nur einen (ich empfehle Scanner über den anderen).

Was passiert, ist dies: Der Aufruf an JOptionPane öffnet einen Dialog für Ihren Benutzer, um einen Wert einzugeben. Dieser Wert wird von diesem Methodenaufruf zurückgegeben, mit dem Sie nichts tun. Dann nach der Dialog ist fertig, rufen Sie keyboard.nextLine(), die das Programm blockiert, bis der Benutzer ein weiteres Wert in das Befehlszeilenfenster (oder Ihre IDE, wenn Sie es durch laufen) eingeben.

Wenn Sie beide verfügbaren Optionen sehen möchten, versuchen Sie, die keyboard Zeilen zu kommentieren und firstname = JOptionPane... und so weiter zu setzen. Sobald Sie das Programm ausprobiert haben, machen Sie das Gegenteil: Kommentieren Sie die JOptionPane Anrufe und ersetzen Sie sie durch System.out.println Anrufe.

Als jemand, der begann Eingabe Eingabe über JOptionPane zu lernen, glaube ich, Scanner ist ein viel besseres Dienstprogramm.

+0

Ich werde das versuchen und Ihren Rat beachten. Danke für die ausführliche Antwort. –

Verwandte Themen