發新話題

[JAVA] 數學算式之求解

[JAVA] 數學算式之求解

引用:
/*****************************************
說明:請在視窗上配置一文字方塊及一按鈕,在
文字方塊上輸入一數學運算式,按上述按鈕後,
輸出該數學運算式的最後結果值。該運算式的運算元
皆介於0~10000,而運算子僅含「+」,且該運算式
的字元總個數(即運算元的個數加上運算子的個數)
最多為30,程式中必須有須有判斷範圍的程式,若是
超出題目所訂定的字串長度則要求重新輸入。
*************************************************/
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
//想想還有沒有其他的東西要import
public class f1 extends JFrame  implements ActionListener//名稱改一改
{
    Container c;
    //設定UI元件
    JTextField txt;
    JLabel lab_p,lab_ans;
    JButton bot;
    //設定共用的變數與類別
    public f1()   //建構元,名稱改一改
    {
        super("數學算式之求解");
        c=getContentPane();//取得ContentPane
        //設定版面設定
        c.setLayout(new FlowLayout(FlowLayout.CENTER));//設定為用flowlayout
        //初始化UI元件
        txt=new JTextField(30);
        lab_p=new JLabel("請輸入數學運算式");
        lab_ans=new JLabel("尚無答案!");
        bot=new JButton("執行");
        //將UI元件加入ContentPane
        c.add(lab_p);
        c.add(txt);
        c.add(bot);
        c.add(lab_ans);
        //設定UI元件與滑鼠的事件觸發傾聽者
        bot.addActionListener(this);
        setSize(640,480);//設定size,顯示出去
        show();
    }
    public void paint(Graphics g)  
    {
            super.paint(g);//畫出元件
            //額外的畫圖程式寫在這裡
    }
    //UI元件事件處理類別寫在這裡
     /***按鈕事件的傾聽方法****/
    public void actionPerformed(ActionEvent e) //按鈕事件的處理方法
    {
            int i;
            int sum,pud;
            char now;
            sum=0;
            pud=0;
            if (txt.getText().length()>30)//檢查輸入字串長度
            {
                     lab_ans.setText("範圍錯誤,請重新輸入(字元總個數"+txt.getText().length()+")個");
                     return;
            }
            for (i=0;i<txt.getText().length();i=i+1)
                {
                        now=txt.getText().charAt(i);
                        if (now=='+') //ADD
                        {
                                sum=sum+pud;
                                pud=0;
                        }
                        else //數字
                        {
                                now=(char) (now - '0'); //算出數字值
                                pud=pud*10+now;
                                 if (pud>10000)//檢查範圍
                                 {
                                         lab_ans.setText("範圍錯誤,請重新輸入");
                                         return;
                                 }
                        }
                }
                /*****最後的pud不會被處理到*****/
                sum=sum+pud;
                lab_ans.setText("答案是:"+sum);
    }
    //滑鼠事件處理類別寫在這裡
  /***主程式***/
    public static void main(String args[]) //程式起點
    {
        f1 app=new f1(); //名稱改一改,啟動UI元件
        app.addWindowListener(new WindowAdapter(){
            public void windowClosing(WindowEvent e)
            {
                System.exit(0);
            }
        }); //處理視窗關閉要求
    }
}

TOP

發新話題

本站所有圖文均屬網友發表,僅代表作者的觀點與本站無關,如有侵權請通知版主會盡快刪除。