2014-09-22 276 views
2

我是一名正在参加Java编程课程的学生。我的老师要求我们使用JOption窗格进行练习。我认为我拥有大部分的功能,但无法使其正常工作。我的程序不接受JOption窗格中的选项,但它在CMD窗口中接受它们。在JOption窗格被清除之后,选项被接受。我的代码是:Java中的扫描器输入问题

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

public class Coffee10 { 

    private static int item; 
    private static double price; 
    private static int menuNum; 
    private static Scanner input; 

    public static void main(String[] args) { 
     calculateP(); 

     if (menuNum > 0) //calculateP(); going for 3 instances of input 
     { 
      if (menuNum > 0) //calculateP(); 
      { 
       if (menuNum > 0) { 
        calculateP(); 
       } 
      } 
     } 
    } 

    public static double calculateP() { 
     Scanner input = new Scanner(System.in); 

     JOptionPane.showInputDialog(null, "Jivin' Java Coffee Shop" + "\nCoffee" + "\n(1)American  1.99" + "\n(2)Expresso  2.50" + "\n(3)Latte    2.15" + "\nMake selection. Press 0 to quit"); 
     JOptionPane.showInputDialog(null, "Jivin' Java Coffee Shop" + "\nCoffee" + "\n(1)American  1.99" + "\n(2)Expresso  2.50" + "\n(3)Latte    2.15" + "\nMake selection. Press 0 to quit"); 
     JOptionPane.showInputDialog(null, "Jivin' Java Coffee Shop" + "\nCoffee" + "\n(1)American  1.99" + "\n(2)Expresso  2.50" + "\n(3)Latte    2.15" + "\nMake selection. Press 0 to quit"); 
     JOptionPane.showMessageDialog(null, "Your total order comes to $" + price + "."); 

     menuNum = input.nextInt(); 

     if (menuNum == 1) { 
      item += 1; 
      price += 1.99; 
      return 1.99; 
     } else if (menuNum == 2) { 
      item += 1; 
      price += 2.50; 
      return 2.50; 
     } else if (menuNum == 3) { 
      item += 1; 
      price += 2.15; 
      return 2.15; 
     } else { 
      return 0; 
     } 
    } 
} 
+2

请格式化你的代码。这是不可读的。 – 2014-09-22 14:20:58

+0

注释掉的代码是怎么回事('calculateP()')? – Holloway 2014-09-22 14:24:58

+0

它正在启动3次JOption窗格,只希望它出现1次。试错。 – user3855016 2014-09-22 14:37:47

回答

0

您不使用ScannerJOptionPane.showInputDialog()。该方法具有用户输入的返回值。见the javadoc

0

您在System.in上使用Scanner witch是标准输入AKA控制台,这就是为什么它在您使用控制台时适用于您。要从JOptionPane获得输入,您必须存储返回值JOptionPane.showInputDialog方法。此方法的返回值是用户输入

0

如果你想从你的JOptionPane应该使用这个值:

String result = JOptionPane.showInputDialog(null, "Jivin' Java Coffee Shop" + "\nCoffee" + "\n(1)American  1.99" + "\n(2)Expresso  2.50" 
       + "\n(3)Latte    2.15" + "\nMake selection. Press 0 to quit"); 
if(result != null){ 
menuNum = Integer.parseInt(result); 
}