??個人專欄:
?? 算法設(shè)計與分析:算法設(shè)計與分析_IT閆的博客-CSDN博客
??Java基礎(chǔ):Java基礎(chǔ)_IT閆的博客-CSDN博客
??c語言:c語言_IT閆的博客-CSDN博客
??MySQL:數(shù)據(jù)結(jié)構(gòu)_IT閆的博客-CSDN博客
??數(shù)據(jù)結(jié)構(gòu):??????數(shù)據(jù)結(jié)構(gòu)_IT閆的博客-CSDN博客
??C++:C++_IT閆的博客-CSDN博客
??C51單片機:C51單片機(STC89C516)_IT閆的博客-CSDN博客
??基于HTML5的網(wǎng)頁設(shè)計及應(yīng)用:基于HTML5的網(wǎng)頁設(shè)計及應(yīng)用_IT閆的博客-CSDN博客??????
??python:python_IT閆的博客-CSDN博客
??離散數(shù)學(xué):離散數(shù)學(xué)_IT閆的博客-CSDN博客
歡迎收看,希望對大家有用!
目錄
??功能簡介:
??分塊分析:
??導(dǎo)入包和聲明全局變量:
??創(chuàng)建界面并添加組件:
??添加事件監(jiān)聽器:
??整合邏輯:
??程序不足:
??整改建議:
??源代碼:
???展示視頻:
??功能簡介:
這是一個簡單的計算器小程序,可以進行加、減、乘、除四則運算。界面分為一個屏幕和多個按鈕,通過按鈕輸入數(shù)字和運算符,同時在屏幕上顯示輸入內(nèi)容和計算結(jié)果。具體實現(xiàn)包括:
界面布局:使用GridLayout布局,將界面分為6個部分,分別放置屏幕和按鈕。
數(shù)字輸入:通過按鈕監(jiān)聽,每次點擊數(shù)字按鈕將數(shù)字添加到字符串s中,并在屏幕上顯示當(dāng)前輸入內(nèi)容。
運算符輸入:同樣通過按鈕監(jiān)聽,點擊運算符按鈕時保存當(dāng)前輸入的數(shù)字,清空輸入框,將運算符保存在flag中。
計算結(jié)果:在等號按鈕監(jiān)聽中,根據(jù)flag值選擇進行加、減、乘、除四則運算,并將結(jié)果顯示在屏幕上。其中,除法運算需要特判被除數(shù)為0的情況。
??分塊分析:
??導(dǎo)入包和聲明全局變量:
package one;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class MyCalculator1 {
static int num1 = 0;
static int num2 = 0;
static String s = "";
static String flag = "";
在這一部分中,我們導(dǎo)入了所需的包,并聲明了四個靜態(tài)變量
num1
、num2
、s
和flag
。
??創(chuàng)建界面并添加組件:
public static void main(String[] args) {
// TODO Auto-generated method stub
JFrame win1 = new JFrame("計算器小程序");
win1.setBounds(200, 200, 500, 700);
win1.setDefaultCloseOperation(3);
win1.setVisible(true);
win1.setLayout(new GridLayout(6, 1));
JPanel p1 = new JPanel(new GridLayout(1, 1));// 放屏幕的;
JPanel p2 = new JPanel(new GridLayout(1, 4));// 放+-*/Button的;
JPanel p3 = new JPanel(new GridLayout(1, 3));// 放789Button的;
JPanel p4 = new JPanel(new GridLayout(1, 3));// 放456Button的;
JPanel p5 = new JPanel(new GridLayout(1, 3));// 放123Button的;
JPanel p6 = new JPanel(new GridLayout(1, 3));// 放C0=的;
JTextField text = new JTextField();
JButton bt_add = new JButton("+");
JButton bt_sub = new JButton("-");
JButton bt_mul = new JButton("×");
JButton bt_div = new JButton("÷");
JButton bt_7 = new JButton("7");
JButton bt_8 = new JButton("8");
JButton bt_9 = new JButton("9");
JButton bt_4 = new JButton("4");
JButton bt_5 = new JButton("5");
JButton bt_6 = new JButton("6");
JButton bt_1 = new JButton("1");
JButton bt_2 = new JButton("2");
JButton bt_3 = new JButton("3");
JButton bt_c = new JButton("c");
JButton bt_0 = new JButton("0");
JButton bt_equ = new JButton("=");
win1.add(p1);
win1.add(p2);
win1.add(p3);
win1.add(p4);
win1.add(p5);
win1.add(p6);
p1.add(text);
p2.add(bt_add);
p2.add(bt_sub);
p2.add(bt_mul);
p2.add(bt_div);
p3.add(bt_7);
p3.add(bt_8);
p3.add(bt_9);
p4.add(bt_4);
p4.add(bt_5);
p4.add(bt_6);
p5.add(bt_1);
p5.add(bt_2);
p5.add(bt_3);
p6.add(bt_c);
p6.add(bt_0);
p6.add(bt_equ);
?????????在這一部分中,我們創(chuàng)建了一個
JFrame
窗口,并且設(shè)置了窗口的基本屬性(標(biāo)題、大小、位置、關(guān)閉方式等)。然后,我們使用GridLayout
布局管理器創(chuàng)建了六個面板,并將它們添加到窗口中。接著,我們創(chuàng)建了所需的組件(屏幕、按鈕),并將它們添加到對應(yīng)的面板中。
??添加事件監(jiān)聽器:
bt_0.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
s = s + "0";
text.setText(s);
}
});
bt_1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
s = s + "1";
text.setText(s);
}
});
...
bt_add.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
flag = "+";
num1 = Integer.valueOf(text.getText());
s = "";
text.setText("");
}
});
...
bt_equ.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
int sum = 0;
num2 = Integer.valueOf(text.getText());
switch (flag) {
case "+":
sum = num1 + num2;
break;
case "-":
sum = num1 - num2;
break;
case "×":
sum = num1 * num2;
break;
case "÷":
if (num2 == 0) {
num2 = num2 + 1;
}
sum = num1 / num2;
break;
default:
break;
}
String value = String.valueOf(num1) + " " + flag + " " + String.valueOf(num2) + " = "
+ String.valueOf(sum);
text.setText(String.valueOf(value));
}
});
?????????在這一部分中,我們?yōu)槊總€按鈕添加了事件監(jiān)聽器,并實現(xiàn)了響應(yīng)的功能。例如,當(dāng)用戶點擊數(shù)字按鈕時,我們將數(shù)字添加到字符串變量
s
中,并將其顯示在屏幕上;當(dāng)用戶點擊加號按鈕時,我們將其作為標(biāo)志變量flag
的值,并將屏幕上的數(shù)字賦給變量num1
。
??整合邏輯:
int sum = 0;
num2 = Integer.valueOf(text.getText());
switch (flag) {
case "+":
sum = num1 + num2;
break;
case "-":
sum = num1 - num2;
break;
case "×":
sum = num1 * num2;
break;
case "÷":
if (num2 == 0) {
num2 = num2 + 1;
}
sum = num1 / num2;
break;
default:
break;
}
String value = String.valueOf(num1) + " " + flag + " " + String.valueOf(num2) + " = "
+ String.valueOf(sum);
text.setText(String.valueOf(value));
?????????在這一部分中,我們處理了用戶點擊等號按鈕后的邏輯。我們根據(jù)標(biāo)志變量
flag
的值,對兩個數(shù)字進行相應(yīng)的運算,并將結(jié)果顯示在屏幕上。
??程序不足:
沒有對用戶輸入進行驗證:程序沒有對用戶輸入進行驗證,如果用戶輸入非數(shù)字字符或者特殊字符,可能會導(dǎo)致程序崩潰或輸出錯誤結(jié)果。
不支持小數(shù)運算:程序只支持整數(shù)運算,無法處理帶小數(shù)點的數(shù)字。
操作順序限制:該計算器只支持兩個操作數(shù)的連續(xù)運算,不能處理多個操作符連續(xù)操作的情況。
缺乏界面美化:界面設(shè)計比較簡單,缺乏美觀性和用戶友好性。
代碼結(jié)構(gòu)不清晰:代碼中存在大量的重復(fù)代碼,可讀性和維護性較差。
未處理除數(shù)為0的情況:雖然在除法運算時判斷了除數(shù)是否為0,但只是簡單地將除數(shù)加1而沒有給出合適的提示。文章來源:http://www.zghlxwxcb.cn/news/detail-751585.html
??整改建議:
- 添加輸入驗證邏輯,確保用戶輸入的有效性。
- 添加異常處理機制,處理可能發(fā)生的異常情況。
- 重新設(shè)計代碼結(jié)構(gòu),使用實例變量和方法來組織代碼。
- 調(diào)整界面布局,使按鈕的大小和位置更合理美觀。
??源代碼:
package one;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class MyCalculator1 {
static int num1 = 0;
static int num2 = 0;
static String s = "";
static String flag = "";
public static void main(String[] args) {
// TODO Auto-generated method stub
JFrame win1 = new JFrame("計算器小程序");
win1.setBounds(200, 200, 500, 700);
win1.setDefaultCloseOperation(3);
win1.setVisible(true);
win1.setLayout(new GridLayout(6, 1));
JPanel p1 = new JPanel(new GridLayout(1, 1));// 放屏幕的;
JPanel p2 = new JPanel(new GridLayout(1, 4));// 放+-*/Button的;
JPanel p3 = new JPanel(new GridLayout(1, 3));// 放789Button的;
JPanel p4 = new JPanel(new GridLayout(1, 3));// 放456Button的;
JPanel p5 = new JPanel(new GridLayout(1, 3));// 放123Button的;
JPanel p6 = new JPanel(new GridLayout(1, 3));// 放C0=的;
JTextField text = new JTextField();
JButton bt_add = new JButton("+");
JButton bt_sub = new JButton("-");
JButton bt_mul = new JButton("×");
JButton bt_div = new JButton("÷");
JButton bt_7 = new JButton("7");
JButton bt_8 = new JButton("8");
JButton bt_9 = new JButton("9");
JButton bt_4 = new JButton("4");
JButton bt_5 = new JButton("5");
JButton bt_6 = new JButton("6");
JButton bt_1 = new JButton("1");
JButton bt_2 = new JButton("2");
JButton bt_3 = new JButton("3");
JButton bt_c = new JButton("c");
JButton bt_0 = new JButton("0");
JButton bt_equ = new JButton("=");
win1.add(p1);
win1.add(p2);
win1.add(p3);
win1.add(p4);
win1.add(p5);
win1.add(p6);
p1.add(text);
p2.add(bt_add);
p2.add(bt_sub);
p2.add(bt_mul);
p2.add(bt_div);
p3.add(bt_7);
p3.add(bt_8);
p3.add(bt_9);
p4.add(bt_4);
p4.add(bt_5);
p4.add(bt_6);
p5.add(bt_1);
p5.add(bt_2);
p5.add(bt_3);
p6.add(bt_c);
p6.add(bt_0);
p6.add(bt_equ);
bt_0.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
s = s + "0";
text.setText(s);
}
});
bt_1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
s = s + "1";
text.setText(s);
}
});
bt_2.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
s = s + "2";
text.setText(s);
}
});
bt_3.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
s = s + "3";
text.setText(s);
}
});
bt_4.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
s = s + "4";
text.setText(s);
}
});
bt_5.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
s = s + "5";
text.setText(s);
}
});
bt_6.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
s = s + "6";
text.setText(s);
}
});
bt_7.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
s = s + "7";
text.setText(s);
}
});
bt_8.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
s = s + "8";
text.setText(s);
}
});
bt_9.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
s = s + "9";
text.setText(s);
}
});
bt_c.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
num1 = 0;
num2 = 0;
flag = "";
s = "";
text.setText("");
}
});
bt_add.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
flag = "+";
num1 = Integer.valueOf(text.getText());
s = "";
text.setText("");
}
});
bt_sub.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
flag = "-";
num1 = Integer.valueOf(text.getText());
s = "";
text.setText("");
}
});
bt_mul.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
flag = "×";
num1 = Integer.valueOf(text.getText());
s = "";
text.setText("");
}
});
bt_div.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
flag = "÷";
num1 = Integer.valueOf(text.getText());
s = "";
text.setText("");
}
});
bt_equ.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
int sum = 0;
num2 = Integer.valueOf(text.getText());
switch (flag) {
case "+":
sum = num1 + num2;
break;
case "-":
sum = num1 - num2;
break;
case "×":
sum = num1 * num2;
break;
case "÷":
if (num2 == 0) {
num2 = num2 + 1;
}
sum = num1 / num2;
break;
default:
break;
}
String value = String.valueOf(num1) + " " + flag + " " + String.valueOf(num2) + " = "
+ String.valueOf(sum);
text.setText(String.valueOf(value));
}
});
}
}
???展示視頻:
【Java】——實現(xiàn)可視化加減乘除計算器文章來源地址http://www.zghlxwxcb.cn/news/detail-751585.html
到了這里,關(guān)于【Java】——實現(xiàn)可視化加減乘除計算器的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!