2013-02-06 111 views
0

我的程序有问题。程序显示第一个JOption消息对话框,但是当你输入一个值时,它不能显示第二个对话框?基本计算器

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

public class javaCalculator 
{ 
public static void main(String[] args) 
{ 
    int num1; 
    int num2; 
    String operation; 


    Scanner input = new Scanner(System.in); 

    JOptionPane.showInputDialog(null,"please enter the first number"); 
    num1 = input.nextInt(); 

    JOptionPane.showInputDialog(null,"please enter the second number"); 
    num2 = input.nextInt(); 


    JOptionPane.showInputDialog(null,"Please enter operation"); 
    operation = input.next(); 

    if (operation.equals ("+")) 
    { 
     JOptionPane.showMessageDialog(null,"your answer is" + " " + (num1 + num2)); 
    } 
    if (operation.equals ("-")) 
    { 
     JOptionPane.showMessageDialog(null,"your answer is" + " " + (num1 - num2)); 
    } 

    if (operation.equals ("/")) 
    { 
     JOptionPane.showMessageDialog(null,"your answer is" + " " + (num1/num2)); 
    } 
    if (operation.equals ("*")) 
    { 
     JOptionPane.showMessageDialog(null,"your answer is" + " " + (num1 * num2)); 
    } 


} 


} 
+0

然后操作可能*不*等于任何操作字符串 - 什么是* *是真的吗? (另外,考虑使用'System.out.println'作为控制台应用程序..你正在从控制台读取数据,所以不妨写信给它: - /) – 2013-02-06 01:54:34

+0

而且,*这个程序是如何启动的?用'java'或'javaw'? – 2013-02-06 02:01:16

回答

0

从对话框输出,而不是从System.in阅读数:

String firstNumber = JOptionPane.showInputDialog(null,"please enter the first number"); 
if (firstNumber != null) { 
    num1 = Integer.parseInt(firstNumber); 
} 

扫描仪是在你的代码不必要的。

+0

@ user2037720它有用吗?请接受或说点什么:) – gincsait

+0

无需纠正OP的反馈/接受。 –

0

您可以尝试使用示例代码:

import javax.swing.JOptionPane; 

public class Hw4_3 { 

    private static boolean flag; 

    public static void main(String[] args) { 
     do { 
      String[] expression = getTask(); 
      double result = calculate(expression); 
      display(expression, result); 
      repeat(); 
     } while (flag); 
    } 

    public static String[] getTask() 
    { 
     String bleh = JOptionPane.showInputDialog(null, "Please enter what you would like to calculate: "); 
     String[] tokens = bleh.split(" "); 
     return tokens; 
    } 

    public static double calculate(String[] data) 
    { 
     double num1 = Double.parseDouble(data[0]); 
     double num2 = Double.parseDouble(data[2]); 
     double result = 0; 
     if(data[1].equals("+")) 
     { 
      result = add(num1, num2); 
      return result; 
     } 
     else if(data[1].equals("-")) 
     { 
      result = subtract(num1, num2); 
      return result; 
     } 
     else if(data[1].equals("*")) 
     { 
      result = multiply(num1, num2); 
      return result; 
     } 
     else 
     { 
      if(num2 == 0) 
      { 
       JOptionPane.showMessageDialog(null, "Sytax error, divide by zero"); 
      } 
      result = divide(num1, num2); 
      return result; 
     } 


    } 

    public static double add(double num1, double num2) 
    { 
     return num1 + num2; 
    } 

    public static double subtract(double num1, double num2) 
    { 
     return num1 - num2; 
    } 

    public static double multiply(double num1, double num2) 
    { 
     return num1 * num2; 
    } 

    public static double divide(double num1, double num2) 
    { 
     return num1/num2; 
    } 

    public static void display(String[] data, double result) 
    { 
     if(data[1].equals("/") && data[2].equals("0")) 
     { 

     } 
     else 
     { 
      JOptionPane.showMessageDialog(null, data[0] + " " + data[1] + " " + data[2] + " = " + result); 
     } 
    } 

    public static void repeat() 
    { 
     int bleh = JOptionPane.showConfirmDialog(null, "More?",null, JOptionPane.YES_NO_OPTION); 
     if(bleh == JOptionPane.NO_OPTION) 
     { 
      flag = false; 
      JOptionPane.showMessageDialog(null, "Have a good day."); 
     } 
     else 
      flag = true; 

    } 

} 
+1

欢迎来到Stack Overflow!通常情况下,如果答案包含解释代码意图做什么的解释,以及为什么解决问题而不介绍其他问题,答案会更有帮助。 (这个也会从正确的缩进中受益。) –