重慶分公司,新征程啟航
為企業提供網站建設、域名注冊、服務器等服務
為企業提供網站建設、域名注冊、服務器等服務
public static void main(String[] args) {
站在用戶的角度思考問題,與客戶深入溝通,找到薛城網站設計與薛城網站推廣的解決方案,憑借多年的經驗,讓設計與互聯網技術結合,創造個性化、用戶體驗好的作品,建站類型包括:成都網站設計、網站建設、企業官網、英文網站、手機端網站、網站推廣、域名與空間、雅安服務器托管、企業郵箱。業務覆蓋薛城地區。
String st = "";
計算器 j = new 計算器();
boolean t = true;
while (t) {
System.out.print("請輸入計算代碼:");
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
try {
st = br.readLine();
} catch (IOException ex) {
Logger.getLogger(計算器.class.getName()).log(Level.SEVERE, null, ex);
}
if (st.equals("end")) {
t = false;
} else if (!st.equals("")) {
j.處理(st);
}
}
}
public void 處理(String st) {
if (st.indexOf("+") != -1) {
加(符號處理(st, "+"));
} else if (st.indexOf("-") != -1) {
減(符號處理(st, "-"));
} else if (st.indexOf("握棚*") != -1) {
乘(符號處理(st, "*"叢野));
} else if (st.indexOf("/") != -1) {
除(符號處理(st, "/"));
}
}
public int[] 符號處理(String st, String s) {
int[] i = new int[2];
i[0] = Integer.parseInt(st.substring(0, st.indexOf(s)));
i[1] = Integer.parseInt(st.substring(st.indexOf(s) + 1));
return i;
}
public void 加(int x[]) {
System.out.println(x[0] + "+" + x[1] + "=" + (x[0] + x[1]));
}
public void 減(int[] x) {
System.out.println(x[0] + "-" + x[1] + "=" + (x[0] - x[1]));
}
public void 乘(int[] x) {
System.out.println(x[0] + "*" + x[1] + "=" + x[0] * x[1]);
}
public void 除(int x[]) {
if (x[1] == 0) {
System.out.print("除數不能為零"段鄭則);
return;
}
System.out.println(x[0] + "/" + x[1] + "=" + x[0] / x[1]);
}
可以運行:輸入示例:55+62
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import javax.swing.*;
public class Calculator extends JFrame{
private float op1,op2;//定義兩個變量存放需要運算的值
private String str="";//定義str去和text進行交叉賦值
private String opr,co;//opr存放符合,co用來存放復制的內容
private double re;//用來存放運算的結果
private boolean bo=false;//是否進行了+-*/運算
private boolean btime=false;//時間開關
Container contentpane=this.getContentPane();
JPanel panel1=new JPanel(new BorderLayout()),
panel2=new JPanel(new FlowLayout()),
panel3=new JPanel(new GridLayout(4,5)),
panel4=new JPanel(new BorderLayout()),
panel5=new JPanel(new BorderLayout());
//菜單欄
JMenuBar menubar=new JMenuBar();
JMenu edit=new JMenu("編輯(E)"),
find=new JMenu("查看(V)"),
help=new JMenu("幫助(H)");
JMenuItem copy=new JMenuItem("復制(C)",'C'),
paste=new JMenuItem("粘貼(P)",'P'),
standard=new JMenuItem("標準型(T)",'T'),
science=new JMenuItem("科學型(S)",'S'),
numarray=new JMenuItem("數字分組(I)",'I'),
helptopic=new JMenuItem("幫助主納裂中洞山題(H)",'H'),
aboutcal=new JMenuItem("關于計算器源扒(A)",'A');
//輸入文本框
JTextField text=new JTextField(25);
//數字鍵
JButton one=new JButton("1"),
two=new JButton("2"),
three=new JButton("3"),
four=new JButton("4"),
five=new JButton("5"),
six=new JButton("6"),
seven=new JButton("7"),
eight=new JButton("8"),
nine=new JButton("9"),
zero=new JButton("0");
//功能鍵
JButton division=new JButton("/"),
multiply=new JButton("*"),
addition=new JButton("+"),
subtration=new JButton("-"),
sqrt=new JButton("sqrt"),
residual=new JButton("%"),
sign=new JButton("+/-"),
dot=new JButton("."),
reciprocal=new JButton("1/X"),
amount=new JButton("="),
backspace=new JButton("Backspace"),
ce=new JButton("CE"),
c=new JButton("C"),
time=new JButton("time");
public Calculator() {
contentpane.setLayout(new BorderLayout());
//textField文本從右邊開始寫
text.setHorizontalAlignment(SwingConstants.RIGHT);
text.setText("0.");
//菜單欄添加
edit.add(copy);
edit.add(paste);
find.add(standard);
find.add(science);
find.addSeparator();
find.add(numarray);
help.add(helptopic);
help.addSeparator();
help.add(aboutcal);
//把組件添加至容器中
menubar.add(edit);
menubar.add(find);
menubar.add(help);
panel1.add(menubar,"North");
panel1.add(text,"West");
//添加數字、功能鍵至panel2、panel3
panel2.add(backspace);
panel2.add(ce);
panel2.add(c);
panel2.add(time);
panel3.add(seven);
panel3.add(eight);
panel3.add(nine);
panel3.add(division);
panel3.add(sqrt);
panel3.add(four);
panel3.add(five);
panel3.add(six);
panel3.add(multiply);
panel3.add(residual);
panel3.add(one);
panel3.add(two);
panel3.add(three);
panel3.add(subtration);
panel3.add(reciprocal);
panel3.add(zero);
panel3.add(sign);
panel3.add(dot);
panel3.add(addition);
panel3.add(amount);
panel4.add(panel2,"North");
panel4.add(panel3,"West");
panel5.add(panel1,"North");
panel5.add(panel4,"West");
contentpane.add(panel5,"North");
//事件
//助記符
edit.setMnemonic('E');
find.setMnemonic('V');
help.setMnemonic('H');
//快捷鍵
KeyStroke kcopy=KeyStroke.getKeyStroke(KeyEvent.VK_C,Event.CTRL_MASK);
copy.setAccelerator(kcopy);
KeyStroke kpaste=KeyStroke.getKeyStroke(KeyEvent.VK_V,Event.CTRL_MASK);
paste.setAccelerator(kpaste);
//0-9、.的顯示事件
actionlistener1 al1=new actionlistener1();
one.addActionListener(al1);
two.addActionListener(al1);
three.addActionListener(al1);
four.addActionListener(al1);
five.addActionListener(al1);
six.addActionListener(al1);
seven.addActionListener(al1);
eight.addActionListener(al1);
nine.addActionListener(al1);
//小數點的ActionListener事件
dot.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
int count;
count=str.length();
//1.第一位就為.時改變text中內容為:"0."
if(count==0){
str="0.";
text.setText(str);
}
//2.不可以重復按"."
else {if(!str.contains(".")){
str+=".";
text.setText(str);
}
else
System.out.println("您再點的話,輸入的將不再是小數了!");
}
}
});
//如果第一位是0那么第二位就不可以為0
zero.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
int count;
count=str.length();
if(bo){
if(!(str.contains("0")count==1)){
str="";
str+="0";
text.setText(str);
}else
System.out.println("您再點的話,輸入的將不再是數字了!");
}
else{
if(!(str.contains("0")count==1)){
str+="0";
text.setText(str);
}else
System.out.println("您再點的話,輸入的將不再是數字了!");
}
bo=false;
}
});
//+、-、*、/、%運算
actionlistener3 al3=new actionlistener3();
addition.addActionListener(al3);
subtration.addActionListener(al3);
multiply.addActionListener(al3);
division.addActionListener(al3);
residual.addActionListener(al3);
//CE和C清空按鈕時間
actionlistener2 al2=new actionlistener2();
ce.addActionListener(al2);
c.addActionListener(al2);
//退格鍵
backspace.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
int count;
count=str.length()-1;
if(bo==false){
if(count=0){
str=str.substring(0,count);
text.setText(str);
}
else
text.setText("0.");
}else
System.out.println("您現在正進行法則運算!");
}
});
//求平方根
sqrt.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
int count;
count=str.length();
if(count!=0){
op1=Float.parseFloat(text.getText());
re=Math.sqrt(op1);
String str1=String.valueOf(re);
text.setText(str1);
str="";
}
else
System.out.println("您現在的按sqrt鍵毫無意義");
}
});
//求倒數
reciprocal.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
int count;
count=str.length();
if(count!=0){
op1=Float.parseFloat(text.getText());
if(op1!=0){
re=1/op1;
String str1=String.valueOf(re);
text.setText(str1);
str=str1;
}
else{
text.setText("除數不可以為0的");
str="";
}
}
else
System.out.println("您現在的按1/X鍵毫無意義");
}
});
//=事件
amount.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
op2=Float.parseFloat(str);
//需判斷進行那種運算法則
if(opr=="+"){//加法運算
re=op1+op2;
String str1=String.valueOf(re);
text.setText(str1);
str=String.valueOf(re);
}else{
if(opr=="-"){//減法運算
re=op1-op2;
String str1=String.valueOf(re);
text.setText(str1);
str=String.valueOf(re);
}else{
if(opr=="*"){//乘法運算
re=op1*op2;
String str1=String.valueOf(re);
text.setText(str1);
str=String.valueOf(re);
}else{
if(opr=="/"op2!=0){//除法運算
re=op1/op2;
String str1=String.valueOf(re);
text.setText(str1);
str=String.valueOf(re);
}else{
if(opr=="%"){//取余運算
re=op1%op2;
String str1=String.valueOf(re);
text.setText(str1);
str="";
}
else if(op2==0){
text.setText("除數不可以為0的");
str="";
}
}
}
}
}
//打印看看
System.out.print(op1);
System.out.print(opr);
System.out.print(op2+"=");
System.out.print(re);
System.out.println();
}
});
//復制事件
copy.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
int count;
count=str.length();
if(count!=0){
co=text.getText();
}
else
System.out.println("沒有可復制的對象");
}
});
//粘貼事件
paste.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
str=co;
text.setText(str);
}
});
//時間事件
time.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
if(btime==false){
String st=(new Date()).toString();
text.setText(st);
str="";
btime=true;
}
else{
text.setText(str);
btime=false;
}
}
});
//+/-事件
sign.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
int a=Integer.valueOf(str);
a=a*(-1);
str=String.valueOf(a);
text.setText(str);
}
});
}
//定義1-9按鈕在text中顯示的內部類
class actionlistener1 implements ActionListener{
public void actionPerformed(ActionEvent e){
JButton button=(JButton)e.getSource();
String btext=button.getText();
//如果第一位為0再輸入其他非零的整數時將零忽略
if(bo){
if(str.indexOf("0")==0str.length()==1){
str="";
str+=btext;
text.setText(str);
}else{
str="";
str+=btext;
text.setText(str);}
}else{
if(str.indexOf("0")==0str.length()==1){
str="";
str+=btext;
text.setText(str);
}else{
str+=btext;
text.setText(str);
}
}
bo=false;
}
}
//定義清空text中內容的內部類
class actionlistener2 implements ActionListener{
public void actionPerformed(ActionEvent e){
str="";
text.setText("0.");
}
}
//定義+、-、*、/、%運算的內部類
class actionlistener3 implements ActionListener{
public void actionPerformed(ActionEvent e){
int count;
count=str.length();
if(count!=0){
JButton button=(JButton)e.getSource();
opr=button.getText();
op1=Float.parseFloat(str);
bo=true;
}
else
System.out.println("您現在的按鍵毫無意義!");
}
}
public static void main(String[] args){
Calculator cc=new Calculator();
cc.pack();
cc.setResizable(false);//不可最大化
cc.setVisible(true);
cc.setTitle("計算器");
cc.setDefaultCloseOperation(EXIT_ON_CLOSE);
Dimension scmsize=Toolkit.getDefaultToolkit().getScreenSize();
int w=cc.getSize().width;
int h=cc.getSize().height;
int x=(scmsize.width-w)/2;
int y=(scmsize.height-h)/2;
cc.setLocation(x, y);
}
}