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. ...
随机推荐
- GitHub访问慢
问题描述 一直都觉得访问 GitHub 时速度非常慢,刷新一下都要等好久!于是尝试一下能否解决掉... github.com assets-cdn.github.com avatar2.githubu ...
- js模块化编程之CommonJS和AMD/CMD
js模块化编程commonjs.AMD/CMD与ES6模块规范 一.CommonJS commonjs的require是运行时同步加载,es6的import是静态分析,是在编译时而不是在代码运行时.C ...
- PYMySQL的注册功能的实现
import pymysql conn = pymysql.connect( host = "127.0.0.1", port = 3306, user = "root& ...
- LeetCode(81): 搜索旋转排序数组 II
Medium! 题目描述: 假设按照升序排序的数组在预先未知的某个点上进行了旋转. ( 例如,数组 [0,0,1,2,2,5,6] 可能变为 [2,5,6,0,0,1,2] ). 编写一个函数来判断给 ...
- 【python】安装hyperscan-python
环境centos6.2 1. 先安装hyperscan 主要参考http://blog.csdn.net/cheng_fangang/article/details/51143412 注意:里面2.8 ...
- 【sqli-labs】Less1~Less4
学习sql注入啦,一下都是我做sqli-labs时的笔记.可能有错误,如果有人发现了欢迎指正~~ 常用知识点: 1.mysql注释有三种:① #: 注释从#到行尾 ② --空格: 注释到行尾,注意-- ...
- 波哥博客Url
http://www.cnblogs.com/whatlonelytear/
- Vuex状态管理模式的面试题及答案
转载:点击查看原文 1.vuex有哪几种属性? 答:有五种,分别是 State. Getter.Mutation .Action. Module 2.vuex的State特性是? 答: 一.Vuex就 ...
- Android Studio 删除多余的虚拟设备(Virtual Device)
操作系统:Windows 10 x64 IDE:Android Studio 3.2.1 菜单:Tools > AVD Manager 在Android Virtual Device Manag ...
- 基础运算符补充,流程控制之if判断/while循环
常量 常量即指不变的量.在python中没有一个专门 的语法代表常量,程序员约定俗成地用变量名全部被大写代表常量. AGE_OF_OLDBOY = 56 基础运算符补充 1.算术运算 加减乘除+ - ...