Java編寫計算器的的常見做法
用java怎麼編寫簡易計算器?有哪幾種編寫方法呢?下面跟yjbys小編一起來看看吧!
界面設計:用一個JPanel1 佈局是網格 (4*4),分別放置數字和功能鍵,再用一個JPanel2 放置顯示區(JTextArea)1和2,在把JPanel1放入JPanel2中,JPanel2 放入JFrame中;
計算:
有數字按鈕按下時,把相應的值讀入顯示區裏,當有功能鍵按下時,顯示區清空,在讀入第二操作數,當有”=”按下時,調用相應的函數計算結果,並顯示。並激活相應的'探聽器。
方法1:
import .*;
import t.*;
public class MyCalculator {
private Frame f;
private TextField tf = new TextField(30);
private long result;
private boolean append=false;
private char operator='=';
private Button[] btn=new Button[15];
public MyCalculator() {
initComponent();
}
private void initComponent() {
f = new Frame("My Calculator V1.0");
ayout(new BorderLayout()); //The frame uses BorderLayout
indowListener(new WindowAdapter() {
public void windowClosing(WindowEvent evt) {
(0);
}
});
Panel centerPanel = new Panel();
ayout(new GridLayout(5, 3)); //The panel uses GridLayout
NumberListener nl=new NumberListener();
OperatorListener ol=new OperatorListener();
btn[10]=new Button("+");
btn[11]=new Button("-");
btn[12]=new Button("*");
btn[13]=new Button("/");
btn[14]=new Button("=");
for (int i=0;i<=9;i++){
btn[i]=new Button(eOf(i));
(btn[i]);
btn[i]ctionListener(nl);
if (i%2==1){
(btn[(i+19)/2]);
btn[(i+19)/2]ctionListener(ol);
}
}
(centerPanel, ER);
Panel northPanel = new Panel();
ditable(false);
(tf);
(northPanel, H);
}
public void go() {
();
isible(true);
}
public static void main(String[] args) {
new MyCalculator()();
}
/**
*採用成員內部類方式,實現探聽器接口,方便訪問主類內類內部成員。
*此類負責數字按鈕Action事件監聽和處理
*/
class NumberListener implements ActionListener{
public void actionPerformed(ActionEvent e){
if (!append) {
ext("");
append=true;
}
String s=ext();
s+=ctionCommand();
ext(s);
if (!btn[10]abled()){
for(int i=10;i<=14;i++) btn[i]nabled(true);
}
}
}
/**
* 成員內部類,負責操作符按鈕的事件處理
*/
class OperatorListener implements ActionListener{
public void actionPerformed(ActionEvent e){
if (!append) return;
for(int i=10;i<=14;i++) btn[i]nabled(false);
String s=ext();
long num=eLong(s);//get the number of textfield
append=false; //set append
switch(operator){
case '+':result+=num;break;
case '-':result-=num;break;
case '*':result*=num;break;
case '/':{
if (num==0) result=0;
else result/=num;
break;
}
case '=':result=num;break;
}
ext(eOf(result));
//set the value of result to textfield
String op=ctionCommand();
operator=At(0); // set operator
}
}
}
方法2:
——————————————————————————————————————————————
package wanwa;
import .*;
public class calc {
public static void main(String[] args) {
Scanner input = new Scanner();
tln("*****************簡易計算器****************");
tln("*/t/t/t/t/t*");
tln("* 使用說明: 1.加法 2.減法 3.乘法 4.除法 *");
tln("*/t/t/t/t/t*");
tln("*****************************************");
for(int i=0;i<100;i++){
t("/n請選擇運算規則:");
int num = Int();
switch(num){
case 1:
tln("/n******你選擇了加法******/n");
t("請輸入第1個加數:");
int jiashu1 = Int();
t("請輸入第2個加數:");
int jiashu2 = Int();
tln("運算結果爲:" + jiashu1 + " + " + jiashu1 + " = " + (jiashu1 + jiashu2));
break;
case 2:
tln("/n******你選擇了減法******/n");
t("請輸入被減數:");
int jianshu1 = Int();
t("請輸入減數:");
int jianshu2 = Int();
tln("運算結果爲:" + jianshu1 + " - " + jianshu2 + " = " + (jianshu1 - jianshu2));
break;
case 3:
tln("/n******你選擇了乘法******/n");
t("請輸入第1個因數:");
int chengfa1 = Int();
t("請輸入第2個因數:");
int chengfa2 = Int();
tln("運算結果爲:" + chengfa1 + " * " + chengfa2 + " = " + (chengfa1 * chengfa2));
break;
case 4:
tln("/n******你選擇了除法******/n");
t("請輸入被除數:");
double chufa1 = Int();
t("請輸入除數:");
double chufa2 = Int();
tln("運算結果爲:" + chufa1 + " / " + chufa2 + " = " + (chufa1 / chufa2) + " 餘 " + (chufa1 % chufa2));
break;
default:
tln("/n你的選擇有錯,請重新選擇!");
break;
}
}
}
}
第三種寫法:
——————————————————————————————————————————————
package wanwa;
import .*;
import t.*;
import g.*;
public class Calculator extends JFrame {
private Container container;
private GridBagLayout layout;
private GridBagConstraints constraints;
private JTextField displayField;// 計算結果顯示區
private String lastCommand;// 保存+,-,*,/,=命令
private double result;// 保存計算結果
private boolean start;// 判斷是否爲數字的開始
public Calculator() {
super("Calculator");
container = getContentPane();
layout = new GridBagLayout();
ayout(layout);
constraints = new GridBagConstraints();
start = true;
result = 0;
lastCommand = "=";
displayField = new JTextField(20);
orizontalAlignment(T);
x = 0;
y = 0;
width = 4;
height = 1;
= ;
htx = 100;
hty = 100;
onstraints(displayField, constraints);
(displayField);
ActionListener = new InsertAction();
ActionListener command = new CommandAction();
// addButton("Backspace", 0, 1, 2, 1, );
// addButton("CE", 2, 1, 1, 1, );
// addButton("C", 3, 1, 1, 1, );
addButton("7", 0, 2, 1, 1, );
addButton("8", 1, 2, 1, 1, );
addButton("9", 2, 2, 1, 1, );
addButton("/", 3, 2, 1, 1, command);
addButton("4", 0, 3, 1, 1, );
相關文章
-
JAVA語言的常見排序算法
導語:每種排序算法都有它自己的優點及侷限性,適用於不同的要求範圍,在選擇時應根據需要適當選用,甚至可將多種算法結合起來使用,效率纔會更高。下面就由小編爲大家介紹一下JAVA語言的常見排序算法,歡迎大家閱讀! 1 排序 -
java編譯計算器
這個計算器的界面模仿Windows自帶的簡易計算器。 思路:不考慮連續計算(如1+2+1)的情況,只是兩個數值進行基本運算1、定義三個變量2、將第一次按鈕的值賦值個第一個變量3、將第二個按鈕的值(也就是加減乘除)賦值給 -
java常見的排序算法的代碼
穩定度(穩定性)一個排序算法是穩定的,就是當有兩個相等記錄的關鍵字R和S,且在原本的列表中R出現在S之前,在排序過的列表中R也將會是在S之前。排序算法分類常見的有插入(插入排序/希爾排序)、交換(冒泡排序/快速排序)、選擇(選擇 -
計算機二級Java入門教程:Java類的基本構成
理清考試題目的重點有助於我們更快更好的掌握考試方法,以下本站小編整理的計算機二級Java入門教程:Java類的基本構成,歡迎閱讀! 三:Java類的基本構成 1:Java 類的定義形式一個完整的 Java 類通常由下面六個部分組成: -
Java認證輔導:Java實現二叉樹遍歷算法
Java實現二叉樹遍歷算法在JAVA中實現二叉樹,程序如下://********************************************************************//filename: //purpose: test a binarytree with java//date: 2002/12/18//author: flyf -
計算機二級JAVA考試常見知識點
Java是一門面向對象編程語言,不僅吸收了C++語言的各種優點,還摒棄了C++裏難以理解的多繼承、指針等概念。下面是小編整理的關於計算機二級JAVA考試常見知識點,歡迎大家參考! 2.1數據類型數據類型指明瞭變量或表達式的 -
經典Java面試題之Java中Char類型的運算
黨的基層組織是黨的全部工作和戰鬥力的基礎,是宣傳和執行黨的路線、方針、政策、加強對黨員的教育,管理和監督。團結組織黨內外幹部和羣衆,努力完成本村所擔負任務的戰鬥堡壘。爲了充分發揮基層黨組織的這種極其重要的作 -
計算機二級JAVA考試構建JAVA程序2017
很多人一見到說要編程就以爲很難,其實只有一點一滴學知識點也不難,下面是小編整理的計算機二級JAVA考試構建JAVA程序介紹,歡迎閱讀! 第一個java applicationjava程序分爲java application(java 應用程序)和java applet -
JAVA常見編碼問題解決方法
編碼是信息從一種形式或格式轉換爲另一種形式的過程也稱爲計算機編程語言的代碼簡稱編碼。下面小編準備了關於JAVA常見編碼問題解決方法,提供給大家參考! JAVA的J2SE處理編碼解碼寫法Java代碼import ecoder;public -
計算機二級Java語言程序設計考試常見知識點
Java可以編寫桌面應用程序、Web應用程序、分佈式系統和嵌入式系統應用程序等。下面是小編整理的關於計算機二級Java語言程序設計考試常見知識點,希望大家認真閱讀! 算術運算符算術運算符總共有 7 種:+、 - 、*、/、%