课程:《程序设计与数据结构》
班级:202023
姓名:李佳欣
学号:20202327
实验教师:王志强
实验日期:2021年9月16日
必修/选修: 必修
1.实验内容
编写简单的计算器,完成加减乘除模运算。
要求从键盘输入两个数,使用判定语句选择一种操作,计算结果后输出,然后使用判定和循环语句选择继续计算还是退出。
编写测试代码,测试验证。
2. 实验过程及结果
由于补考占用了较长的实验时间导致在当晚半夜才完整做完单元测试和代码。
不使用测试模块时的主函数:
import java.util.Scanner;
public class MyUtil {
private static Scanner scanner;
public static void main(string[] args) {
double data1;
double data2;
String op;
scanner = new Scanner(System.in);
string com;
for(int i=0;i<=999;i++)
{
System.out.println("Input data1");
data1 = scanner.nextDouble;
System.out.println("Input data2");
data2=scanner.nextDouble():
System.out.println("Input op);
op=scanner.nextLine();
op=scanner.nextLine()
switch(op)
{
case "-":
double minus= data1-data2;
System.out.println(+data1+"-"+data2+"="+minus);
//return minus;
case"+":
double plus=data1+data2:
System.out.println(+data1+"+"+data2+"="+plus);
//return plus;
case"*":
double multiply=data1*data2;
System.out.println(+data1+"*"+data2+"="+multiply);
//return multiply;
case"/":
double divide=data1/data2;
System.out.println(+data1+"/"+data2+"="+divide);
//return divide;
case"%":
double rede=data1%data2;
system.out.println(+data1+"%"+data2+"="+rede);
//return rede;
}
System.out.println("Q/C");
com =scanner.nextLined();
If (com.compareTo("Q")==0 || com.compareTo("q" )==0) {
System.exit();
} else if (com.compareTo("Q")==0 || com.compareTo("q")==0){
continue;
}
//return 0.0;
}
}
使用测试模块时的代码:
import java,util.scanner;
public class Myutilf{
ortvate statte scanner scanner;
public stati double fun(double data1, double data2,String op) {
scanner - new scanner(Systen,in);
string com;
/for(int i=o;t<=999;t++)
//{
// System.out.println("Input data1");
//data1 = scanner .nextDouble();
//System,out,println("Input data2");
//data2=scanner nextDoublec();
//System.out.println("Input op");
//op = scanner.nextline();
//op .= scanner.nextline();
switch( op)
{
double minus= data1-data2;
//system.out.println(+data1+"-"+data2+"-"+minus);
return minus;
case “+”:
double plus=data1+data2:
//system.out.println(+data1+"+"+data2+"+"+plus );
return plus;
case”*”:
double multiply=data1*data2;
//system.out.prtntln(+data1."*"*data2+"="multiply): return multiply;
case"/':
double divide=data1/data2;
//System.out.println(+data1+"/"-data2+"="+divide);
return divide;
case"%":
double rede=data1%data2;
//System.out.println(+data1+"%"+data2+"="+rede):
return rede;
}
//Systen.out.printin("Q/C");
//com = scanner.nextLine();
//if(con.compareTo("Q")==0 || com.compareTo("q")==0){
//system.exit(0);
//else if(com.conpareTo("Q")==0 || com.compareTo("q")==0){
Continue;
return 0.0;
}
}
3. 实验过程中遇到的问题和解决过程
问题1:java无NextChar()项
问题1解决方案:更改NextChar()的想法,使用String进行输入。
问题2:未理解测试代码和主代码的关系,测试代码运行错误,提示NoSuchMethodError主代码中参数仍为(String[] args)
问题2解决方案:重新修改main方法为:(double data1, double data2,String op)修改参数,暂时屏蔽主函数输出语句 结果成功。
其他
Java的public static和C语言的函数类似。
参考资料
《Java程序设计与数据结构教程(第二版)》
《Java程序设计与数据结构教程(第二版)》学习指导