20192327何源实验二
学号 2020-2021-1 《数据结构与面向对象程序设计》实验二报告
课程:《程序设计与数据结构》
班级: 1923
姓名: 何源
学号: 20192327
实验教师:王志强
实验日期:2020年10月8日
必修/选修: 必修
1.实验内容
(1) 编写简单的计算器,完成加减乘除模运算。
(2) 要求从键盘输入两个数,使用判定语句选择一种操作,计算结果后输出,然后使用判定和循环语句选择继续计算还是退出。
(3) 编写测试代码,测试验证
2. 实验过程及结果
此处填写实验的过程及结果
首先按照实验要求编写代码
package src;
import java.util.Scanner;
public class Calculator
{
public static void main(String[] args)
{
float i,a1,a2,end;
int a,b;
for(i = 1;i >= 0;i++)
{
System.out.print("Enter the first numbe(1-5) to select Calculation type(+-*/%):");
Scanner scan1 = new Scanner(System.in);
b = scan1.nextInt();
switch (b)
{
case 1:
System.out.print("Enter the first number:");
Scanner scana1 = new Scanner(System.in);
a1 = scana1.nextFloat();
System.out.print("Enter the second number:");
a2 = scana1.nextFloat();
end = addition(a1,a2);
System.out.println(end);
break;
case 2:
System.out.print("Enter the first number:");
Scanner scana11 = new Scanner(System.in);
a1 = scana11.nextFloat();
System.out.print("Enter the second number:");
Scanner scana22 = new Scanner(System.in);
a2 = scana22.nextFloat();
end = subtraction(a1,a2);
System.out.println(end);
break;
case 3:
System.out.print("Enter the first number:");
Scanner scana111 = new Scanner(System.in);
a1 = scana111.nextFloat();
System.out.print("Enter the second number:");
Scanner scana222 = new Scanner(System.in);
a2 = scana222.nextFloat();
end = multiplication(a1,a2);
System.out.println(end);
break;
case 4:
System.out.print("Enter the first number:");
Scanner scana1111 = new Scanner(System.in);
a1 = scana1111.nextFloat();
System.out.print("Enter the second number:");
Scanner scana2222 = new Scanner(System.in);
a2 = scana2222.nextFloat();
end = division(a1,a2);
System.out.println(end);
break;
case 5:
System.out.print("Enter the first number:");
Scanner scana11111 = new Scanner(System.in);
a1 = scana11111.nextFloat();
System.out.print("Enter the second number:");
Scanner scana22222 = new Scanner(System.in);
a2 = scana22222.nextFloat();
end = module(a1,a2);
System.out.println(end);
break;
}
System.out.print("Enter \"1\"to start;Enter \"0\"to end:");
Scanner scan = new Scanner(System.in);
a = scan.nextInt();
if(a == 0)
{
break;
}
}
}
public static float addition(float a1, float a2)
{
float ans;
ans = a1 + a2;
return ans;
}
public static float subtraction(float a1, float a2)
{
float ans;
ans = a1 - a2;
return ans;
}
public static float multiplication(float a1, float a2)
{
float ans;
ans = a1 * a2;
return ans;
}
public static float division(float a1, float a2)
{
float ans;
ans = a1 / a2;
return ans;
}
public static float module(float a1, float a2)
{
float ans;
ans = a1 % a2;
return ans;
}
}
然后开始试运行代码,运行结果如下
接下来进行测试,测试代码如下
package src;
public class testCalculator{
public static void main(String[] args) {
if (Calculator.addition(1,1)!=2)
System.out.println("加法运算失败");
else if (Calculator.subtraction(3,1)!=2)
System.out.println("减法运算失败");
else if (Calculator.multiplication(1,2)!=2)
System.out.println("乘法运算失败");
else if (Calculator.division(4,2)!=2)
System.out.println("除法运算失败");
else if (Calculator.module(5,3)!=2)
System.out.println("求模运算失败");
else System.out.println("全部通过测试!");
}
}
运行测试结果如下
根据运行及测试结果可以看到,全部通过测试
3. 实验过程中遇到的问题和解决过程
- 问题1:提示变量不存在
- 问题1解决方案:找到相关缺失的变量并声明
- 问题2:无法解析相关方法
- 问题2解决方案:更改方法名
- 问题3:case语句在switch外部
- 问题3解决方案:补加“()”
- 问题4:在测试时提示“不能解决符号XXX”
- 问题4解决方案:更改错误的方法名
- 问题5:提示警告“条件 'i <= 0' 始终为 'false' ”
- 问题5解决方案:将“i<=0”改为“i>=0”
其他(感悟、思考等)
这次程序可以说是编得非常复杂了,究其原因还是因为编写之前没有对实验做一个足够细致的规划才导致的这种情况,同时在命名变量时也出现了因为命名不够准确而导致的各种问题,以后在编写实验室应该对此多加注意。编写程序终归是一个非常复杂的过程,需要我们去多加练习和思考。