20202310 实验二Java基础(数据、表达式、判定、循环语句)
实验二 Java基础(数据/表达式、判定/循环语句)
(一)实验内容
(1) 编写简单的计算器,完成加减乘除模运算。
(2) 要求从键盘输入两个数,使用判定语句选择一种操作,计算结果后输出,然后使用判定和循环语句选择继续计算还是退出。
(3) 编写测试代码,测试验证。(https://www.cnblogs.com/rocedu/p/4472842.html)
(二)实验要求
(1) 掌握数据的定义和表达式求解的基础知识
(2) 掌握循环和判定语句的使用
(三)助教验收
(1) 简单计算机器的验收
(2) 测试验收
(3) 上传到码云
(四)实验报告
课程:《程序设计与数据结构》
班级: 2023
姓名: 肖衍豪
学号:20202310
实验教师:王志强
实验日期:2021年9月23日
必修/选修: 必修
## 1.实验内容
(1) 编写简单的计算器,完成加减乘除模运算。
(2) 要求从键盘输入两个数,使用判定语句选择一种操作,计算结果后输出,然后使用判定和循环语句选择继续计算还是退出。
(3) 编写测试代码,测试验证。(https://www.cnblogs.com/rocedu/p/4472842.html)
## 2. 实验过程及结果
(1)首先进行编辑的是简单的运算器,该运算器能够实现加减乘除取模等最基本的运算功能,并且能够在一组数据运算完成之后再进行下一次运算,经过最各个功能的实现进行分析后,写出如下代码:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.awt.FlowLayout;
import javax.swing.*;
@SuppressWarnings("unused")
class Sumjp {
JOptionPane jp = new JOptionPane();
Sumjp(String str) {
JOptionPane.showMessageDialog(null, str);
System.exit(0);
}
Sumjp(String[] str){
}
}
public class JiSuan extends JFrame implements ActionListener,ItemListener{
/**
*
*/
private static final long serialVersionUID = 1L;
double x1,x2,sum = 0;
String f;
JTextField txt = new JTextField(30);
JTextField txt1 = new JTextField(5);
JTextField txt2 = new JTextField(5);
JTextField txt3 = new JTextField(5);
JLabel lb1 = new JLabel("数据1:");
JLabel lb2 = new JLabel("符号:");
JLabel lb3 = new JLabel("数据2:");
JButton jbtn = new JButton("确定");
JiSuan(){
setSize(350,150);
setVisible(true);
setTitle("计算器:");
setDefaultCloseOperation(EXIT_ON_CLOSE);
setLayout(new FlowLayout());
add(lb1);
add(txt1);
// add(lb2);
// add(txt2);
JComboBox<String> jc = new JComboBox<String>();
jc.addItem("加");
jc.addItem("减");
jc.addItem("乘");
jc.addItem("除");
add(jc);
add(lb3);
add(txt3);
add(jbtn);
add(txt);
validate();
jc.addItemListener(this);
jbtn.addActionListener(this);
}
public void itemStateChanged(ItemEvent ie){
f = (String)ie.getItem().toString();
}
public void actionPerformed(ActionEvent e){
x1 = Double.parseDouble(txt1.getText());
//f = txt2.getText();
x2 = Double.parseDouble(txt3.getText());
if(f.equals("加")){
sum = x1 + x2;
}
if(f.equals("减")){
sum = x1 - x2;
}
if(f.equals("乘")){
sum = x1*x2;
}
if(f.equals("")){
sum = x1/x2;
}
txt.setText(x1 + f + x2 + "=" + sum);
new Sumjp(x1 + f + x2 + "=" + sum);
}
public static void main(String[] args) {
new JiSuan();
}
}
(2)在IDEA软件中对代码进行编译及运行,对于该程序的可行性进行验证,如果有语法错误或者功能性缺陷重新对代码进行修改调整
## 3. 实验过程中遇到的问题和解决过程
- 问题1:不太会写对于一个运算器其中一个重要的部件循环语句do-while语句
- 问题1解决方案:上网查找相关资料,掌握do-while语句的写法
-问题2:在IDEA上运行代码的时候发现JDK文件不小心被删除了,导致无法编译运行
- 问题2解决方案:重新下载安装JDK文件
## 其他(感悟、思考等)
对于一个运算器来说实现加减乘除取模运算是其最基本的功能,要实现该功能我在以前的C语言实验课中有进行过相关的程序编写,利用循环判断语句进行程序编写。相比较于C语言,Java面向对象的特点显然在编写运算器的时候更具有优势,也能更加简洁的实现相关功能,在对Java进行编写的时候我发现了两种语言的共性和个性,对于编写中的错误我发现Java更加难以发现和纠正,因此导致编写更加费力,还有一个重要原因就是刚刚接触Java不久,对于Java的语法较为陌生,在编写的时候无法随心所遇,在修正的时候也会存在找不到错误原因的情况。
## 参考资料
- [《Java程序设计与数据结构教程(第二版)》](https://book.douban.com/subject/26851579/)
- [《Java程序设计与数据结构教程(第二版)》学习指导](http://www.cnblogs.com/rocedu/p/5182332.html)