一、实验目的
1、掌握Eclipse开发环境的基本使用。
2、掌握第一个Java程序的编写、编译和执行。
3、掌握控制台IO的基本使用。
4、掌握控制台格式化输出的实现。
5、掌握语言基础:常量、变量、运算符、表达式的使用。
6、掌握三种基本结构程序的基本组织和编写:顺序、选择和循环。
7、掌握程序排错的基本方法和技术、了解程序设计风格。
8、掌握一维数组的使用。
9、掌握二维数组的使用。
二、实验内容和主要步骤
1.准备开发环境
2.使用Eclipse IDE编写第一个Java程序(选做)
3.控制台IO实现程序
4.控制台格式化输出(课后完成)
5.数据类型、常量、变量的测试程序
6.运算符测试程序
7.分支结构的应用编程
8.循环结构的应用编程
9.使用一维数组读取并处理成绩
10.转置一个随机二维数组
三、实验结论和思考
1、类名等标识符能否使用中文?这样做好不好?
答:可以,但不建议这样做,因为关键字几乎都是英文的,这样会使中英文混淆,导致代码可读性差。
2、利用java.util.Random类如何生成一个两位随机正整数,给出简单代码。
答:
import java.util.Random;
import java.util.Scanner;
Random random = new Random(); // 生成随机数对象
int a = random.nextInt(90)+10;
3、编写一个能够完成四则运算测试的交互程序。
具体需求有:
(1)每次执行程序,随机生成两个两位大于等于10的整数,假设为a和b。
(2)然后要求用户计算a+b、a-b、a*b和a/b(a整除以b)的值。
(3)计算完之后,综合给出用户的答题情况,包括:用户答案、正确答案、是否答对。
(4)假设每道算式25分,给出用户是否合格的结论(60分以上合格)。
(5)询问用户是否继续测试?按y键继续,按n键退出本测试程序。
作答要求:
(1)编写程序,在下方贴出程序代码。
答:package 实验1包;
import java.util.Random;
import java.util.Scanner;
public class GuessResult {
public void Test() {
Scanner input = new Scanner(System.in);
Random random = new Random(); // 生成随机数对象
int score=0;//定义得分变量
int a = random.nextInt(90)+10; //随机生成20以内运算数存入a中
int b = random.nextInt(20); //随机生成20以内运算数存入b中
// 显示运算式,并输入答案
System.out.println("请输入以下各算式的计算结果");
System.out.printf("%d + %d =", a, b);
int result1 = input.nextInt(); // 输入答案
System.out.printf("%d - %d =", a, b);
int result2 = input.nextInt();
System.out.printf("%d * %d =", a, b);
int result3 = input.nextInt();
System.out.printf("%d / %d =", a, b);
int result4 = input.nextInt();
if(result1==(a+b)) {
score+=25;
System.out.printf("(1)恭喜你答对了,得分25分!\n");
}
else
System.out.printf("(1)很遗憾答错了,正确答案是:%d\n",a+b);
if(result2==(a-b)) {
score+=25;
System.out.printf("(2)恭喜你答对了,得分25分!\n");
}
else
System.out.printf("(2)很遗憾答错了!正确答案是:%d\n",a-b);
if(result3==(a*b)) {
score+=25;
System.out.printf("(3)恭喜你答对了,得分25分!\n");
}
else
System.out.printf("(3)很遗憾答错了!正确答案是:%d\n",a*b);
if(result4==(a/b)) {
score+=25;
System.out.printf("(4)恭喜你答对了,得分25分!\n");
}
else
System.out.printf("(4)很遗憾答错了!正确答案是:%d\n",a/b);
if(score>=60)//分数60分以上为合格
System.out.println("---恭喜你,此次测验合格通过,再接再厉哦---");
else
System.out.println("很遗憾,此次测验不合格,请继续努力");
}
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
GuessResult d=new GuessResult ();
d.Test();
System.out.println("<<您是否要继续参与测试?继续请按y健,退出请按n健>>"
+ "");
char c = input.next().charAt(0);//键入y值或n值
if(c=='y') {
System.out.println("请继续参与测试");
d.Test();
}
else {
input.close();
System.out.println("已退出测验");
}
}
}
(2)执行程序,给出能够说明问题的执行截图。
答:
4、编写补充完成“使用一维数组读取并处理成绩”的DealScore程序。
其中有6个方法和主方法需要补充,请按以下顺序作答完成。
作答要求:
(1)在DealScore中:public static void show(double[] ascore)方法被补充正确代码后其完整的截图(不是源代码,是源代码截图)如下。
答:
(2)在DealScore中:public static double getSum(double[] ascore)方法被补充正确代码后其完整的截图(不是源代码,是源代码截图)分别如下。
答:
(3)在DealScore中:public static double getAvg(double[] ascore)方法被补充正确代码后其完整的截图(不是源代码,是源代码截图)分别如下。
答:
(4)在DealScore中:public static double getMax(double[] ascore)方法被补充正确代码后其完整的截图(不是源代码,是源代码截图)分别如下。
答:
(5)在DealScore中:public static double getMin(double[] ascore)方法被补充正确代码后其完整的截图(不是源代码,是源代码截图)分别如下。
答:
(6)在DealScore中:public static void descSort(double[] ascore)方法被补充正确代码后其完整的截图(不是源代码,是源代码截图)分别如下。
〖提示:升序排序已经做好,它使用了实用类Arrays.sort。那么降序如何实现呢?〗
答:
(7)在DealScore中主方法中如下注释行处:
需要补充代码,将正确代码粘贴到下面。
〖提示:这是主方法中的空缺代码,需要结合上下文仔细通读,会明白这里缺什么?〗
答:
5、编写补充完成“转置一个随机二维数组”的Reverse2dArray程序。
其中有2个方法需要补充,请按以下顺序作答完成。
作答要求:
(1)在Reverse2dArray中:public Reverse2dArray(int r, int c)构造方法被补充正确代码后其完整的截图(不是源代码,是源代码截图)如下。
答:
(2)在Reverse2dArray中:public int[][] reverse2dArray()方法被补充正确代码后其完整的截图(不是源代码,是源代码截图)如下。
答:
(3)执行正确补充完成的Reverse2dArray程序,并将一次执行结果的截图粘贴在下面。
答:
四、实验心得(必须填写)
在做DealScore.java这个程序补充代码的第一小题时,对于 显示double数组ascore中的成绩,用空格分隔 ,我就一直思维惯性地选择用System.out.println格式化输出,一直想不出来该怎样实现不换行输出且数组元素间空格隔开,后就重新去翻看书,才发现自己把另一种格式化输出.print给忘了,这种可以实现输出元素不换行,并且用字符串连接语句实现空格间距。在做如何利用升序方法写出降序方法时。我冥思苦想,硬是毫无头绪,偶然间看到冒泡排序的元素交换法,就给了我很大的灵感。我便直接将升序后的结果进行头尾交换顺序,就完成了降序功能。