Java实现简单计算器、抽票程序
计算器:
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.Font;
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.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField; public class Calculator extends JFrame implements ActionListener {
// 属性
JTextField txtResult;
String a = "", b = "", operator = "";
boolean beginDigit = false, beginOperator = false,beginEquals=false;
//beginDigit记录此次输入前是否输入数字,beginOpertator记录此次输入前是否输入运算符,用于处理多次连续输入运算符的情况(5+-3)
//beginEquals记录此次输入前是否进行过运算
public Calculator() {
setTitle("计算器");
setSize(240, 270);
setResizable(false);
setLocationRelativeTo(null);
setDefaultCloseOperation(EXIT_ON_CLOSE); Container contentPane = this.getContentPane();
contentPane.setLayout(new BorderLayout(1, 5));
JPanel pnlNorth = new JPanel();
JPanel pnlCenter = new JPanel(); pnlNorth.setLayout(new BorderLayout());
pnlCenter.setLayout(new GridLayout(4, 4, 3, 3)); Font font = new Font("Times Roman", Font.BOLD, 20); contentPane.add(BorderLayout.NORTH, pnlNorth);
contentPane.add(BorderLayout.CENTER, pnlCenter); txtResult = new JTextField();
txtResult.setFont(font);
txtResult.setEnabled(false);
JButton btnClear = new JButton("C");
btnClear.setFont(font);
btnClear.addActionListener(this); pnlNorth.add(BorderLayout.CENTER, txtResult);
pnlNorth.add(BorderLayout.EAST, btnClear); String[] captions = { "7", "8", "9", "+", "4", "5", "6", "-", "1", "2", "3", "*", "0", ".", "/", "=", };
for (int i = 0; i < captions.length; i++) {
JButton btn = new JButton(captions[i]);
btn.setFont(font);
pnlCenter.add(btn);
btn.addActionListener(this);
}
}
public static void main(String[] args) {
JFrame frame = new Calculator();
frame.setVisible(true);
} @Override
public void actionPerformed(ActionEvent event) {
String cmd = event.getActionCommand();
if ("0123456789".contains(cmd)) {
if(beginEquals==true) {//如果之前已进行过运算,再次直接输入数字就需要进行清空
txtResult.setText("");
a="";b = "";operator = "";beginDigit=false;
}
if (beginDigit == true) {
txtResult.setText(txtResult.getText() + cmd);
} else {
txtResult.setText(cmd);
beginDigit = true;
beginEquals=false;//需要进行置换,不然无法进行上一个if语句
}
beginOperator=true;
}
if ("+-*/".contains(cmd)) {
beginEquals=false;
if (operator != ""&&beginOperator==true) {
if (txtResult.getText() != null) {
b = txtResult.getText();
if ("+".equals(operator)) {
a = String.valueOf(Float.parseFloat(a) + Float.parseFloat(b));
}if ("-".equals(operator)) {
a = String.valueOf(Float.parseFloat(a) - Float.parseFloat(b));
}if ("*".equals(operator)) {
a = String.valueOf(Float.parseFloat(a) * Float.parseFloat(b));
}if ("/".equals(operator)) {
a = String.valueOf(Float.parseFloat(a) / Float.parseFloat(b));
}
operator = cmd;//再次记录运算符
txtResult.setText(a);
}
} else {
a = txtResult.getText();
operator = cmd;
}
beginDigit = false;
beginOperator=false;
}
if (".".equals(cmd)) {
if(txtResult.getText().contains(".")) {
JOptionPane.showMessageDialog(null, "不可输入多个小数点!");
a=a.substring(0,a.length()-1);//删除多余的小数点
txtResult.setText(a);
}
txtResult.setText(txtResult.getText() + cmd);
}
if ("C".equals(cmd)) {
txtResult.setText("");
a = "";
b = "";
operator = "";
beginDigit = false;
beginOperator=false;
}
if ("=".equals(cmd)) {
b=txtResult.getText();
if ("+".equals(operator)) {
a = String.valueOf(Float.parseFloat(a) + Float.parseFloat(b));
}if ("-".equals(operator)) {
a = String.valueOf(Float.parseFloat(a) - Float.parseFloat(b));
}if ("*".equals(operator)) {
a = String.valueOf(Float.parseFloat(a) * Float.parseFloat(b));
}if ("/".equals(operator)) {
a = String.valueOf(Float.parseFloat(a) / Float.parseFloat(b));
}
txtResult.setText(a);
a=txtResult.getText();
beginEquals=true;
beginDigit=false;
beginOperator=false;
}
}
}
抽奖:
import java.util.ArrayList;
import java.util.List;
import java.util.Random; public class Lottery {
public static void main(String[] args) {
List<Integer> list=new ArrayList<>();
int[] result=new int[6];
for(int i=0;i<32;i++) {
list.add(i+1);
}
Random random=new Random();//记得得初始化一个Random对象
for(int i=0;i<result.length;i++) {
// 随机生成一个下标,下标的范围不超过list.size()
int index=random.nextInt(list.size());
//将list中下标为index的数删掉
result[i]=list.remove(index);
}
for(int i=0;i<result.length;i++) {
System.out.printf("%02d ",result[i]);
}
}
}
Java实现简单计算器、抽票程序的更多相关文章
- [Java.web]简单计算器
项目的 WebRoot 目录下的 calculator.jsp <%@ page language="java" import="java.util.*" ...
- java编写简单的语法分析预测程序
编译原理课程中,编了一个简单的语法分析预测程序,这个程序时根据固定的文法得到预测分析表,然后编写程序来判断表达式是否会正确推到出来. 前提是程序没有左递归符合LL(1)文法: 文法如下: E→TE' ...
- java实现简单计算器功能
童鞋们,是不是有使用计算器的时候,还要进入运行,输入calc,太麻烦了,有时候甚至还忘记单词怎么拼写,呵呵程序员自己写代码实现,又简单,又方便啊 以下为代码(想要生成可执行工具可参考:http://w ...
- 用Java实现简单的网络聊天程序
Socket套接字定义: 套接字(socket)是一个抽象层,应用程序可以通过它发送或接收数据,可对其进行像对文件一样的打开.读写和关闭等操作.套接字允许应用程序将I/O插入到网络中,并与网络中的其他 ...
- java实现简单计算器
首先利用字符串数组保存计算器上的按钮的标签名 private final String[] str = {"7","8","9"," ...
- C语言初学 简单计算器计算加减乘除程序
#include<stdio.h> main() { float a,b; char c; printf("输入表达式如a+(* - /)b:\n"); scanf( ...
- Java多线程练习:ticket卖票程序
/*需求:简单的卖票程序多个窗口买票 */ class Ticket extends Thread{ private static int tick=100; public void ru ...
- 《java小应用程序(Applet)和java应用程序(Application)分别编写的简单计算器》
Application和Java Applet的区别.Java语言是一种半编译半解释的语言.Java的用户程序分为两类:Java Application和Java Applet.这两类程序在组成结构和 ...
- Java语言编写计算器(简单的计算器)
Java编写的一个简单计算器,本人还比较菜,只能这样了,有点代码冗余,不能连续计算. import javax.swing.*; import java.awt.*; import java.awt. ...
随机推荐
- 纯css使用线性渐变实现滚动进度条(来自于微信前端早读课)
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- AngularJs中,如何在ng-repeat完成之后,执行Js脚本
//ng-repeat生成4个li,生成后再执行自定义方法fn在每个li后加一根横线 <script> var myapp=angular.module('myapp',[]); myap ...
- spring-boot与spring-data-JPA的简单整合
如何在boot中轻松使用JPA <!--首先引入JPA依赖--><dependency> <groupId>org.springframework.boot< ...
- ubuntu 安装Mysql8.0
1. 去官网下载安装包 下载链接:点击打开链接 https://dev.mysql.com/downloads/mysql/ 如果你的系统是32位选择第一个,64位选择第二个 也可以用wget 下载 ...
- java----重载
重载: //同一个类中,方法名相同,参数列表不同[java就是靠不同的参数列表来寻找方法的],返回值可以任意,注意和函数的返回值类型相同.public class Demo { public stat ...
- 三维拓扑排序好题hdu3231
/* 三维拓扑排序 将每个长方体分解成六个面,xyz三维进行操作 每一维上的的所有长方体的面都应该服从拓扑关系,即能够完成拓扑排序=如果两个长方体的关系时相交,那么其对应的三对面只要交叉即可 如 a1 ...
- CF1065D
如果不喜欢过长代码的看官,请移步其他题解... 这题其实思想极其简单: 棋盘问题常见的算法都比较暴力,常用的有搜索和状压dp 而这道题显然没啥能状压的,所以我们考虑搜索 但是仅仅搜索是不够的,因为有极 ...
- Android Studio 打开activity_main.xml不能正常显示
操作系统:Windows 10 x64 IDE:Android Studio 3.2.1 解决方法:http://www.jcodecraeer.com/a/anzhuokaifa/Android_S ...
- C++ 使用system()实现锁定屏幕
除了使用函数“LockWorkStation()”实现锁定屏幕,参考:http://www.cnblogs.com/Satu/p/8183081.html 此外,也可以使用函数“system()”来实 ...
- spring cloud Hystix熔断机制--基本熔断配置和Fegin client熔断配置
所谓的熔断机制和日常生活中见到电路保险丝是非常相似的,当出现了问题之后,保险丝会自动烧断,以保护我们的电器, 那么如果换到了程序之中呢? 当现在服务的提供方出现了问题之后整个的程序将出现错误的信息显示 ...