Базовый калькулятор

У меня проблемы с моей программой. программа отображает первое диалоговое окно сообщения 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));
    }


}


}

person user2037720    schedule 06.02.2013    source источник
comment
Тогда операция, скорее всего, не равна ни одной из строк операторов - что это это на самом деле? (Кроме того, рассмотрите возможность использования System.out.println для консольного приложения.. вы читаете из консоли, поэтому можете писать в нее :-/)   -  person    schedule 06.02.2013
comment
И как запускается эта программа? С java или javaw?   -  person    schedule 06.02.2013


Ответы (2)


Прочитайте числа из вывода диалога, а не из System.in:

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

Сканер не нужен в вашем коде.

person gincsait    schedule 06.02.2013
comment
@ user2037720 Было ли это полезно? Пожалуйста, примите или скажите что-нибудь :) - person gincsait; 13.02.2013

Вы можете попробовать использовать этот пример кода:

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;

    }

}
person Zeyad    schedule 19.02.2015
comment
Добро пожаловать в Stack Overflow! Как правило, ответы гораздо полезнее, если они включают объяснение того, для чего предназначен код, и почему это решает проблему, не вводя других. (И это также выиграет от правильного отступа.) - person Nathan Tuggy; 19.02.2015