JAVA程序设计实验报告
姓 名 王锐 学 号 182054424 班 级 1820544 成 绩 设备名称及软件环境 实验名称 一.实验内容 1. 测试以下程序的运行结果,并进行分析 public class Shiyan1 { public static void main(String[] args) { byte d; d=(byte)257; System.out.println(\+d); } } 2. 将成绩划分为5个等级(优秀,良好,中等,及格,不及格),并从键盘输入一个成绩,判断其等级并输出 3. 编写程序计算三门课的平均成绩,要求应用程序分别用Java不同的循环语句实现。每门课的成绩用Math类的random()方法随机产生。成绩范围在40-100之间。分别用while、for结构实现。 Java开发环境的设置 Win10 Eclipse 实验日期 2020.05.09 1
二.理论分析或算法分析 1. i. 通过 Eclipse 编写并运行,查看运行结果 ii. 通过cmd 运行,了解其运行机制(javac 命令进行编译生成 .class字节码文件, java命令进行解释执行,打印输出) 2. 使用if...else 判断判断输入成绩,输出对应的等级 0 ~ 60 : 不及格 60 ~ 70 : 及格 70 ~ 80 : 中等 80 ~ 90 : 良好 90 ~ 100 : 优秀 3. i. 使用Math.random函数随机生成三个成绩 ii. 计算成绩总和 iii. 计算平均值 2
三.实现方法(含实现思路、程序流程图和源程序列表等) 1. <1> 使用eclipse 编写,输出结果为1 <2> 使用记事本编写,在cmd 下运行,了解到其运行机制 2. 源程序: /* * 若尘 */ package one; import java.util.Scanner; /** * 输入成绩,输出对应等级 * @author ruochen * @version 1.0 */ public class Test02 { public static void main(String[] args) { Scanner sc = new Scanner(System.in) ; System.out.print(\请输入成绩: \ Double grade = sc.nextDouble(); while (grade < 0 || grade > 100) { System.out.println(\成绩错误,请重新输入!\ System.out.print(\请输入成绩: \ grade = sc.nextDouble(); } if (grade >= 0 && grade < 60) { System.out.println(\不及格\ } else if (grade >= 60 && grade < 70) { System.out.println(\及格\ } else if (grade >= 70 && grade < 80) { System.out.println(\中等\ } else if (grade > 80 && grade < 90) { System.out.println(\良好\ } else System.out.println(\优秀\ } } 3. 源代码见附页 3
四.实验结果分析(含执行结果验证、输出显示信息、图形、调试过程中所遇的问题及处理方法等) 1. 输出结果为 d = 1 以上是其中一组对应输出,经过研究,强制转换是有一个固定值域的,正向增加值域为[-128,-127....0.....127],负向增加值域为[127,126...0,-1...-128],这是固定的。所以,257对应为1。 2. 出现问题: 在调试过程忘记判断输入数据的范围,导致出现异常。 解决方法: 在输入成绩后,使用while 循环判断其是否在 0 ~ 100 区间内,否则,重复输入 3. 报告提交日期 (注意:内容写不下时可另附页。)
4
附: 源代码
<1> for 循环实现 /*
* 若尘 */
package one;
import java.util.Arrays; /**
* 使用Math.random() 生成随机成绩并计算其平均值 * @author ruochen * @version 1.0 */
public class Test03 {
public static void main(String[] args) { int[] score = new int[3]; double count = 0;
for (int i = 0; i < score.length; i++) {
score[i] = (int )(Math.random() * (100 - 40 + 1)) + 40; count = count + score[i]; }
System.out.println(\生成的成绩为: \ double avg = count / score.length;
System.out.println(\平均成绩为: \ } }
<2> while 循环实现 /*
* 若尘 */
package one;
import java.util.Arrays; /**
* 使用Math.random() 生成随机成绩并计算其平均值 * @author ruochen * @version 1.1 */
5