Compare commits

...

No commits in common. '601a1864b38e9d689e5b43b3cb120dbff4c48059' and 'c13a40ea955422bdc8eac1c4245c5bb98ad202f8' have entirely different histories.

29
.gitignore vendored

@ -0,0 +1,29 @@
### IntelliJ IDEA ###
out/
!**/src/main/**/out/
!**/src/test/**/out/
### Eclipse ###
.apt_generated
.classpath
.factorypath
.project
.settings
.springBeans
.sts4-cache
bin/
!**/src/main/**/bin/
!**/src/test/**/bin/
### NetBeans ###
/nbproject/private/
/nbbuild/
/dist/
/nbdist/
/.nb-gradle/
### VS Code ###
.vscode/
### Mac OS ###
.DS_Store

8
.idea/.gitignore vendored

@ -0,0 +1,8 @@
# 默认忽略的文件
/shelf/
/workspace.xml
# 基于编辑器的 HTTP 客户端请求
/httpRequests/
# Datasource local storage ignored files
/dataSources/
/dataSources.local.xml

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" default="true" project-jdk-name="1.8" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/out" />
</component>
</project>

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/Computer.iml" filepath="$PROJECT_DIR$/Computer.iml" />
</modules>
</component>
</project>

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="GitSharedSettings">
<option name="FORCE_PUSH_PROHIBITED_PATTERNS">
<list />
</option>
</component>
<component name="VcsDirectoryMappings">
<mapping directory="" vcs="Git" />
</component>
</project>

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="JAVA_MODULE" version="4">
<component name="NewModuleRootManager" inherit-compiler-output="true">
<exclude-output />
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>

@ -1,2 +0,0 @@
# computer

124
a.java

@ -1,124 +0,0 @@
package computer;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class a {
public static void main(String[] args) {
JS win = new JS();
}
}
class JS extends JFrame implements ActionListener {
private StringBuilder sBuilder = new StringBuilder(); // 利用StringBuilder类来显示以及区分两个操作数
JTextArea text = new JTextArea();
double a, b;
Double sum;
String lastOperator = "=";
public JS() {
setBounds(100, 100, 400, 400);
setTitle("计算器");
JMenuBar menubar = new JMenuBar(); // 创建菜单条
this.setJMenuBar(menubar); // 将设置好的菜单条放在窗口中
this.setLayout(new BorderLayout()); // 添加文本框
JPanel p1 = new JPanel();
JPanel p2 = new JPanel();
text.setPreferredSize(new Dimension(370, 60)); // 设置组件大小
p2.setLayout(new FlowLayout());
p1.add(text);
this.add(p1, BorderLayout.NORTH);
p2.setLayout(new GridLayout(5, 4)); // 添加按钮
JButton button[] = new JButton[20];
button[0] = new JButton("C"); // 清空
button[1] = new JButton("CE"); // 清除之前输入的一个数据
button[2] = new JButton("%"); // 取余
button[3] = new JButton("÷"); // 除法
button[4] = new JButton("7");
button[5] = new JButton("8");
button[6] = new JButton("9");
button[7] = new JButton("x"); // 乘号
button[8] = new JButton("4");
button[9] = new JButton("5");
button[10] = new JButton("6");
button[11] = new JButton("-"); // 减号
button[12] = new JButton("1");
button[13] = new JButton("2");
button[14] = new JButton("3");
button[15] = new JButton("+"); // 加号
button[16] = new JButton(" "); // 空格
button[17] = new JButton("0");
button[18] = new JButton("."); // 小数点
button[19] = new JButton("="); // 等于
for (int i = 0; i < button.length; i++) // 将组件加入容器
p2.add(button[i]);
p2.add(button[19]);
add(p2, BorderLayout.CENTER);
for (int i = 0; i < button.length; i++) // 为每一个事件(按钮)添加监视器
button[i].addActionListener(this);
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 点击X号可以关闭程序
}
public void actionPerformed(ActionEvent e) // 事件处理
{
String lab = e.getActionCommand(); // 得到当前的按钮字符,后面进行匹配
if (Character.isDigit(lab.charAt(0)) || lab.equals(".")) { // 处理按钮 0~9 和小数点
sBuilder.append(lab); // 利用StringBuilder类的对象调用方法将数据存起来
text.setText(sBuilder.toString()); // 显示之前所有输入的数据
} else if (lab.equals("CE")) { // 处理"CE"按钮事件 即清除当前的输入的数据
sBuilder.deleteCharAt(sBuilder.length() - 1); // StringBuilder的实例化对象调用方法下标减1即可
text.setText(sBuilder.toString());
} else if (lab.equals("C")) { // 处理"C"按钮事件 即清除之前的输入所有的数据
sBuilder.setLength(0); // 重新创建即可清除之前的输入所有的数据
text.setText("");
} else if (lab.equals("+") || lab.equals("-") || lab.equals("x") || lab.equals("÷") || lab.equals("%")) { // 处理运算符按钮事件
if (sBuilder.length() > 0) {
a = Double.parseDouble(sBuilder.toString()); // 将前面的输入的数 作为第一个操作数a
sBuilder.setLength(0); // 将数组清空来存储第二个操作数 b
lastOperator = lab;
text.setText("" + a + " " + lastOperator + " ");
}
} else if (lab.equals("=")) { // 处理"="按钮事件
if (lastOperator != null && !lastOperator.isEmpty() && sBuilder.length() > 0) {
b = Double.parseDouble(sBuilder.toString()); // 一遇到"=",我们就能得到第二个操作数b
calculate(); // 调用计算方法
}
} else if (lab.equals(" ")) { // 处理空格按钮事件
// 空格按键无功能
}
}
private void calculate() {
switch (lastOperator) {
case "+":
sum = a + b;
break;
case "-":
sum = a - b;
break;
case "x":
sum = a * b;
break;
case "÷":
if (b == 0) {
text.setText("除数不能为0");
return;
}
sum = a / b;
break;
case "%":
if (b == 0) {
text.setText("除数不能为0");
return;
}
sum = a % b;
break;
default:
return;
}
text.setText(sum + "");
sBuilder.setLength(0);
sBuilder.append(sum);
lastOperator = "=";
}
}

@ -0,0 +1,119 @@
package computer;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.text.MessageFormat;
import java.util.Arrays;
public class com {
public static void main(String[] args) {
new JS();
}
}
class JS extends JFrame implements ActionListener {
private final StringBuilder sBuilder = new StringBuilder();
JTextArea text = new JTextArea();
double a, b;
Double sum;
String lastOperator = "=";
public JS() {
setBounds(100, 100, 400, 400);
setTitle("计算器");
JMenuBar menubar = new JMenuBar();
this.setJMenuBar(menubar);
this.setLayout(new BorderLayout());
JPanel p1 = new JPanel();
JPanel p2 = new JPanel();
text.setPreferredSize(new Dimension(370, 60));
p2.setLayout(new FlowLayout());
p1.add(text);
this.add(p1, BorderLayout.NORTH);
p2.setLayout(new GridLayout(5, 4));
JButton[] button = new JButton[20];
button[0] = new JButton("C");
button[1] = new JButton("CE");
button[2] = new JButton("%");
button[3] = new JButton("÷");
button[4] = new JButton("7");
button[5] = new JButton("8");
button[6] = new JButton("9");
button[7] = new JButton("*");
button[8] = new JButton("4");
button[9] = new JButton("5");
button[10] = new JButton("6");
button[11] = new JButton("-");
button[12] = new JButton("1");
button[13] = new JButton("2");
button[14] = new JButton("3");
button[15] = new JButton("+");
button[16] = new JButton(" ");
button[17] = new JButton("0");
button[18] = new JButton(".");
button[19] = new JButton("=");
Arrays.stream(button).forEach(p2::add);
this.add(p2, BorderLayout.CENTER);
for (JButton jButton : button) {
jButton.addActionListener(this);
}
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public void actionPerformed(ActionEvent e) {
String lab = e.getActionCommand();
if (Character.isDigit(lab.charAt(0)) || lab.equals(".")) {
sBuilder.append(lab);
text.setText(sBuilder.toString());
} else if (lab.equals("CE")) {
sBuilder.deleteCharAt(sBuilder.length() - 1);
text.setText(sBuilder.toString());
} else if (lab.equals("C")) {
sBuilder.setLength(0);
text.setText("");
} else if (lab.equals("+") || lab.equals("-") || lab.equals("*") || lab.equals("÷") || lab.equals("%")) {
if (sBuilder.length() > 0) {
a = Double.parseDouble(sBuilder.toString());
sBuilder.setLength(0);
lastOperator = lab;
text.setText(MessageFormat.format("{0} {1} ", a, lastOperator));
}
} else if (lab.equals("=")) {
if (lastOperator != null && !lastOperator.isEmpty() && sBuilder.length() > 0) {
b = Double.parseDouble(sBuilder.toString());
calculate();
}
}
}
private void calculate() {
switch (lastOperator) {
case "+":
sum = a + b;
break;
case "-":
sum = a - b;
break;
case "*":
sum = a * b;
break;
case "÷":
if (b == 0) {
text.setText("除数不能为0");
return;
}
sum = a / b;
break;
case "%":
if (b == 0) {
text.setText("除数不能为0");
return;
}
sum = a % b;
break;
}
text.setText(sum + "");
sBuilder.setLength(0);
sBuilder.append(sum);
lastOperator = "=";
}
}
Loading…
Cancel
Save