我才看过不到1个星期的入门语法
算是作业吧 我有计算器流程图 以前用VB做过 
现在要求用java写 一点思路都没有
如何开始 应该先考虑什么 怎么实现之类的  求大侠给个提示 或者举例子也好 
我还是想自己做出来的 网上刚才是搜索到许多例子 但还不太明白
谢谢了

解决方案 »

  1.   

    import javax.swing.*; 
    import java.awt.*; 
    import java.awt.event.*; 
    public class Calculator extends JFrame implements ActionListener 

    private boolean dotExist, operated, equaled; // 帮助运算的布尔变量 
    private double storedNumber; // 目前的结果 
    private char lastOperator; // 表示上一运算符 
    private JTextField operation; // 结果栏 
    private JButton dot, plus, minus, multi, div, sqrt, equal, changePN, clear; // 运算符 
    private JButton[] numbers; // 数字 
    // 构造者 
    public Calculator() 

    setTitle("Calculator"); 
    // 初始化变量 
    dotExist = false; // 表示当前的数是否有小数点 
    operated = false; // 表示任意运算符是否被按下 
    equaled = false; // 表示等号是否被按下 
    storedNumber = 0; 
    lastOperator = '?'; 
    // 初始化窗口变量 
    operation = new JTextField("0"); 
    operation.setEditable(false); 
    numbers = new JButton[10]; 
    for (int i = 0; i < 10; i++) 
    numbers[i] = new JButton("" + i); 
    dot = new JButton("."); 
    plus = new JButton("+"); 
    minus = new JButton("-"); 
    multi = new JButton("*"); 
    div = new JButton("/"); 
    sqrt = new JButton("√"); 
    equal = new JButton("="); 
    changePN = new JButton("±"); 
    clear = new JButton("AC"); 
    // 将窗口物体放入窗口 
    GridBagLayout layout = new GridBagLayout(); 
    getContentPane().setLayout(layout); 
    addComponent(layout, operation, 0, 0, 4, 1); 
    addComponent(layout, numbers[1], 1, 0, 1, 1); 
    addComponent(layout, numbers[2], 1, 1, 1, 1); 
    addComponent(layout, numbers[3], 1, 2, 1, 1); 
    addComponent(layout, numbers[4], 2, 0, 1, 1); 
    addComponent(layout, numbers[5], 2, 1, 1, 1); 
    addComponent(layout, numbers[6], 2, 2, 1, 1); 
    addComponent(layout, numbers[7], 3, 0, 1, 1); 
    addComponent(layout, numbers[8], 3, 1, 1, 1); 
    addComponent(layout, numbers[9], 3, 2, 1, 1); 
    addComponent(layout, dot, 4, 0, 1, 1); 
    addComponent(layout, numbers[0], 4, 1, 1, 1); 
    addComponent(layout, sqrt, 4, 2, 1, 1); 
    addComponent(layout, plus, 1, 3, 1, 1); 
    addComponent(layout, minus, 2, 3, 1, 1); 
    addComponent(layout, multi, 3, 3, 1, 1); 
    addComponent(layout, div, 4, 3, 1, 1); 
    addComponent(layout, equal, 5, 0, 2, 1); 
    addComponent(layout, changePN, 5, 2, 1, 1); 
    addComponent(layout, clear, 5, 3, 1, 1); 

    // 对按钮进行反应的方法 
    public void actionPerformed(ActionEvent e) 

    JButton btn = (JButton)e.getSource(); 
    if (btn == clear) 

    operation.setText("0"); 
    dotExist = false; 
    storedNumber = 0; 
    lastOperator = '?'; 

    else if (btn == equal) 

    operate('='); 
    equaled = true; 

    else if (btn == plus) 

    operate('+'); 
    equaled = false; 

    else if (btn == minus) 

    operate('-'); 
    equaled = false; 

    else if (btn == multi) 

    operate('*'); 
    equaled = false; 

    else if (btn == div) 

    operate('/'); 
    equaled = false; 

    else if (btn == changePN) 

    operate('p'); 
    operate('='); 
    equaled = true; 

    else if (btn == sqrt) 

    operate('s'); 
    operate('='); 
    equaled = true; 

    else 

    if (equaled) 
    storedNumber = 0; 
    for (int i = 0; i < 10; i++) 
    if (btn == numbers[i]) 

    if (operation.getText().equals("0")) 
    operation.setText("" + i); 
    else if(! operated) 
    operation.setText(operation.getText() + i); 
    else 

    operation.setText("" + i); 
    operated = false; 


    if (btn == dot && ! dotExist) 

    operation.setText(operation.getText() + "."); 
    dotExist = true; 



    // 进行运算的方法 
    private void operate(char operator) 

    double currentNumber = Double.valueOf(operation.getText()).doubleValue(); 
    if (lastOperator == '?') 
    storedNumber = currentNumber; 
    else if (lastOperator == '+') 
    storedNumber += currentNumber; 
    else if (lastOperator == '-') 
    storedNumber -= currentNumber; 
    else if (lastOperator == '*') 
    storedNumber *= currentNumber; 
    else if (lastOperator == '/') 
    storedNumber /= currentNumber; 
    else if (lastOperator == 'p') 
    storedNumber *= -1; 
    else if (lastOperator == 's') 
    storedNumber = Math.sqrt(currentNumber); 
    else if (lastOperator == '=' && equaled) 
    storedNumber = currentNumber; 
    operation.setText("" + storedNumber); 
    operated = true; 
    lastOperator = operator; 

    // 快捷使用GridBagLayout的方法 
    private void addComponent(GridBagLayout layout, Component component, int row, int col, int width, int height) 

    GridBagConstraints constraints = new GridBagConstraints(); 
    constraints.fill = GridBagConstraints.BOTH; 
    constraints.insets = new Insets(10, 2, 10, 2); 
    constraints.weightx = 100; 
    constraints.weighty = 100; 
    constraints.gridx = col; 
    constraints.gridy = row; 
    constraints.gridwidth = width; 
    constraints.gridheight = height; 
    layout.setConstraints(component, constraints); 
    if (component instanceof JButton) 
    ((JButton)component).addActionListener(this); 
    getContentPane().add(component); 

    // 主方法初始化并显示窗口 
    public static void main(String[] args) 

    Calculator calc = new Calculator(); 
    calc.setSize(290, 400); 
    calc.setVisible(true); 


      

  2.   

    谢谢 我有流程图 可以结合我的流程图编写进你的代码吗 因为你这个我就不明白了 
    我设置了很多变量 
    x 按键单个
    a 第一次输入数字
    b 第二次输入数字
    s 计算领域1
    t 计算领域2(在运算的过程中把a b都赋值给计算领域了)
    op 计算种类(加减乘除)
    u 结果
      

  3.   

    import java.awt.*; 
    import java.awt.event.*; 
    import javax.swing.*; public class Calculator extends JPanel 

    static JFrame frame; 
    JLabel add; 
    JTextField num1TextField,num2TextField,resultTextField; 
    JButton equalButton; public Calculator() 

    num1TextField = new JTextField(5); 
    num2TextField = new JTextField(5); 
    resultTextField = new JTextField(5); 
    add = new JLabel("+"); 
    equalButton = new JButton("="); 
    add(num1TextField); 
    add(num2TextField); 
    add(add); 
    add(equalButton); 
    add(resultTextField); ButtonListener bnListener = new ButtonListener(); 
    equalButton.addActionListener(bnListener); 

    class ButtonListener implements ActionListener{ 
    public void actionPerformed(ActionEvent e){ 
    Double n1 = new Double(num1TextField.getText()); 
    Double n2 = new Double(num2TextField.getText()); 
    double num1,num2,num3; 
    num1 = n1.doubleValue(); 
    num2 = n2.doubleValue(); 
    num3 = num1+num2; 
    Double n3 = new Double(num3); 
    resultTextField.setText(n3.toString()); 
    resultTextField.select(0,0); 


    public static void main(String arg[]) 

    try{ 
    UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); 

    catch (Exception exc) 

    System.err.println("Error loading L&F:" + exc); 

    Calculator panel = new Calculator(); 
    frame = new JFrame("Calculator"); 
    frame.addWindowListener(new WindowAdapter() 

    public void windowClosing(WindowEvent e) 

    System.exit(0); 

    }); 
    frame.getContentPane().add("Center",panel); 
    frame.pack(); 
    frame.setVisible(true); 


    这个事加法代码 在网上找得 看着还能明白的 这个代码就是指运算逻辑吗
      

  4.   

    // 初始化窗口变量 
    operation = new JTextField("0"); 
    operation.setEditable(false); 
    这里的operation.setEditable 什么意思呢 
    if (equaled) 
    storedNumber = 0; 
    for (int i = 0; i < 10; i++) 
    if (btn == numbers[i]) 

    if (operation.getText().equals("0")) 
    operation.setText("" + i); 
    else if(! operated) 
    operation.setText(operation.getText() + i); 
    else 

    operation.setText("" + i); 
    operated = false; 


    if (btn == dot && ! dotExist) 

    operation.setText(operation.getText() + "."); 
    dotExist = true; 



    1这段中按下等于后storedNumber = 0; 这个是结果吗 
    2if (operation.getText().equals("0")) 这个用法是说当前窗口为0吗 
    3else if(! operated) 是什么意思呢!号的写法起什么作用呢 
    4这段代码是在讲输出的事吗? 还有一段的一句 
    // 进行运算的方法 
    private void operate(char operator) 

    double currentNumber = Double.valueOf(operation.getText()).doubleValue(); 
    if (lastOperator == '?') 
    这几句讲的是什么
      

  5.   

    我的BLOG有个J2ME版本的计算器的例子!