Java基础实验二

数组应用

[实验任务1]统计信息

[任务介绍]

  1. 任务描述

学生成绩统计。从键盘输入一个班(全班最多不超过30人)学生某门课的成绩,当输入成绩为负值时,输入结束,分别实现下列功能:

  1. 统计不及格人数并打印不及格学生名单;
  2. 统计成绩高于或等于全班平均分的学生人数,并打印这些学生的名单;
  3. 统计各分数段的人数及所占的百分比。

提示

  1. 用num[i]存放第i+1个学生的学号,用score[i]存放第i+1个学生的成绩。设置计数器count,当score[i]<60时,计数器count计数一次,并打印num[i]和score[i]。
  2. 先计算全班平均分aver,当第i个学生的成绩score[i]>=aver时,打印num[i]和score[i]。
  3. 将成绩分为6个分数段,60分以下为第0段,60~69分为第1段, 70~79分为第2段,80~89分为第3段,90~99分为第4段,100分为第5段,因此成绩与分数段的对应关系为:

        各分数段的学生人数保存在数组stu中,用stu[i]存放第i段的学生人数。对于每个学生的成绩,先计算出该成绩所对应的分数段,然后将相应的分数段的人数加1,即stu[i]++。

        注意:要求使用函数来实现各个功能,并用主函数调用它们。

[任务目标]

  1. 学会分析“统计信息”程序的实现思路;
  2. 根据思路独立完成“统计信息”的源代码编写、编译和运行;
  3. 掌握在程序中使用if选择结构、while循环结构语句和 增强for语句 进行读取数组数据并进行相应的运算操作;
  4. 能够根据“统计信息”程序功能的不同,将功能封装到不同的方法中;
  5. 掌握方法和数组的使用。

[实现思路] 

[实现代码及运行结果] 

实现代码如下:

package a;
import java.util.Scanner;
public class Test {
	static void search(int[] num,int[] score,int n){//查找不及格学生
		int i;
		for (i=0;i<n;i++){
			if (score[i]<60&&score[i]>=0){
				System.out.println(num[i]+" "+score[i]);
			}
		}
	}
	static void Ave(int[] num,int[] score,int n){//查找高于等于平均数的学生
		int sum=0,i;
		double aver;
		for (i=0;i<n;i++){
			sum+=score[i];
		}
		aver=sum/n;
		for (i=0;i<n;i++){
			if (score[i]>=aver){
				System.out.println(num[i]+" "+score[i]);
			}
		}
	}
	static void Zhanbi(int[] score,int[] stu,int n){//求各分数段的人数及所占的百分比
		for (int i=0;i<n;i++){
			if (score[i]<60) stu[0]++;
			else stu[(score[i]-50)/10]++;
		}
		for (int i=0;i<n;i++){
			System.out.println(stu[i]+" "+(stu[i]*1.0/n)*100+"%");
		}
	}
	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		Scanner reader=new Scanner(System.in);
		int[] num=new int[30];
		int[] score=new int[30];
		int[] stu=new int[6];
		int count=0,i,n=0;
		for (i=0;i<score.length;i++){
			num[i]=reader.nextInt();
			score[i]=reader.nextInt();
			if (score[i]<0) break;//如果输入分数小于0,退出循环
			n++;
		}
		System.out.println("分数小于60的学生信息如下:");
		System.out.println("学号"+" "+"成绩");
		search(num,score,n);
		System.out.println("分数高于平均分的学生信息如下:");
		System.out.println("学号"+" "+"成绩");
		Ave(num,score,n);
		System.out.println("各分数段的人数及所占的百分比:");
		Zhanbi(score,stu,n);
	}
}

 运行结果如下:

[实验任务2]随机点名器

[任务介绍]

  1. 任务描述

编写一个随机点名的程序,使其能够在全班同学中随机点中某一名同学的名字。随机点名器具备3个功能,包括存储全班同学姓名,总览全班同学姓名和随机点取其中一人姓名。比如随机点名器首先向班级存入张飞、刘备和关羽这3位同学名字,然后总览全班同学的姓名,打印出这3位同学的名字,最后在这3位同学中随机选择一位,并打印出该同学的名字,至此随机点名成功。

备注:

(1)存储全班同学的姓名要求存储5个即可;

(2)输出全班同学姓名,此方法要求能够重载,即能读取users二维数组中的内容并存储到姓名数组中也能读取(1)中存储的人名数组(要求使用增强for语句),且每行输出5个人的姓名。String[][] users = {{"Xb13620114","吴泽胜","男"},{"Xb13620204","蒋驰阳","男"},

                {"Xb15330106","季晨","男"},{"Xb15330117","吴成鑫","男"},

                {"Xb15620109","毛伟强","男"},{"Xb15620110","佘奔","男"},

                {"Xb15620112","汪铭","男"},{"Xb15620115","叶伟港","男"},

                {"Xb15620118","张天鹏","男"},{"Xb15620125","佘鑫儿","女"},

                {"Xb15620123","陈雨箫","女"},{"Xb15620124","蒋怡雨","女"},

                {"Xb15620201","苌一杭","男"},{"Xb15620223","马晨佳","女"},

                {"Xb15620204","范晓航","男"},{"Xb15620211","林子","男"},

                {"Xb15620214","王塞宇","男"},{"Xb15620215","闻广超","男"},

                {"Xb15620222","李娜","女"},{"Xb15620224","沈青遥","女"}

               };

        2. 运行结果

图1  输入人名的数组测试结果

图2  users数组测试结果

[任务目标]

  1. 学会分析“随机点名器”程序的实现思路;
  2. 根据思路独立完成“随机点名器”的源代码编写、编译和运行;
  3. 能够根据“随机点名器”程序功能的不同,将功能封装到不同的方法中;
  4. 能够使用数组解决多个同学姓名的存储问题;
  5. 掌握方法的重载和数组的使用。

[实现思路] 

        随机点名系统有一维和二维两种。一维是输入班级同学姓名,并存进一维数组,并用增强for循环将名字一行输出。调用random产生[0,5]的随机数,用重载函数输出被点到名字的同学姓名。二维数组是在已经存有数据的数组中将姓名输出并每行输出5个姓名(count%5)。同样调用函数(重载函数)产生随机姓名并输出。         

[实现代码及运行结果] 

实现代码如下:

package a;
import java.util.Random;
import java.util.Scanner;
public class Test {
	static void F(String[] user,int a){
		System.out.print("被点到名的同学是:");
		System.out.println(user[a]);
	}
	static void F(String[][] users,int b){
		System.out.print("被点到名的同学是:");
		System.out.println(users[b][1]);
	}
	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		Scanner reader=new Scanner(System.in);
		Random random=new Random();
		int a,b;
		a=random.nextInt(5);
		b=random.nextInt(20);
		String[] user=new String[5];
		int i;
		for (i=0;i<5;i++){
			System.out.print("第"+(i+1)+"个学生:");
			user[i]=reader.nextLine();
		}
		System.out.println("全班同学信息如下:");
		for (String k:user){
			System.out.print(k+"\t");
		}
		System.out.println();
		F(user,a);
		String[][] users={{"Xb13620114","吴泽胜","男"},{"Xb13620204","蒋驰阳","男"},
                {"Xb15330106","季晨","男"},{"Xb15330117","吴成鑫","男"},
                {"Xb15620109","毛伟强","男"},{"Xb15620110","佘奔","男"},
                {"Xb15620112","汪铭","男"},{"Xb15620115","叶伟港","男"},
                {"Xb15620118","张天鹏","男"},{"Xb15620125","佘鑫儿","女"},
                {"Xb15620123","陈雨箫","女"},{"Xb15620124","蒋怡雨","女"},
                {"Xb15620201","苌一杭","男"},{"Xb15620223","马晨佳","女"},
                {"Xb15620204","范晓航","男"},{"Xb15620211","林子","男"},
                {"Xb15620214","王塞宇","男"},{"Xb15620215","闻广超","男"},
                {"Xb15620222","李娜","女"},{"Xb15620224","沈青遥","女"}
              };
		int count=0;
		System.out.println("全班同学信息如下:");
		for (String[] k:users){
			System.out.print(k[1]+"\t");
			count++;
			if (count%5==0) System.out.println();
		}
		F(users,b);
	}
}

运行结果如下: 

感悟:

  1. 通过此次实验我发现,前面学的C语言、C++变得很生疏,一些基础很模糊,函数调用,函数重载......等导致在做实验的时候出现很多错误。我觉得还是得多练习,不然真的很容易就生疏。
  2. Java的数组定义和前面学过的有一定区别,比如以前定义数组都是int a[10];Java中数组的定义是int[] a=new int[10];虽然看上去很不相同,但是都大同小异,在使用和思路方面都差不多。
  3. 此次实验主要掌握了增强for循环的使用,数组的定义以及一维、二维数组的运用。前面学过C++,所以Java接受起来还不算很难。通过此次实验我了解了自己不足的地方和自己努力的方向。对Java有了一定的了解,感觉通过实验自己的动手操作能力有了一定的提高。
  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
以下是Java方法基础实验的介绍和演示: Java方法是一段可重用的代码块,可以接受输入并返回输出。在Java中,方法是类的一部分,可以在类中定义和调用。Java方法的语法如下: ```java 修饰符 返回类型 方法名(参数列表) { // 方法体 return 返回值; } ``` 其中,修饰符可以是public、private、protected或默认,返回类型可以是任何Java数据类型,方法名是标识符,参数列表是一组用逗号分隔的输入参数,方法体是一组执行语句,return语句用于返回方法的输出。 下面是一个Java方法的例子: ```java public class Calculator { public static int add(int a, int b) { return a + b; } } ``` 这个例子定义了一个名为add的静态方法,接受两个整数作为输入,返回它们的和。在另一个类中,可以通过以下方式调用这个方法: ```java int sum = Calculator.add(2, 3); ``` 这个调用将返回5,并将其赋值给变量sum。 现在,我们来进行一个Java方法基础实验。假设我们要编写一个程序,计算两个数的平均值。请按照以下步骤进行操作: 1.创建一个名为Average的类。 2.在Average类中定义一个名为calculateAverage的静态方法,接受两个double类型的参数,返回它们的平均值。 3.在calculateAverage方法中,使用以下代码计算平均值: ```java double average = (num1 + num2) / 2; ``` 其中,num1和num2是方法的输入参数。 4.在另一个类中,调用calculateAverage方法,并将其输出到控制台。 下面是完整的Java代码: ```java public class Average { public static double calculateAverage(double num1, double num2) { double average = (num1 + num2) / 2; return average; } } public class Main { public static void main(String[] args) { double num1 = 3.5; double num2 = 4.2; double average = Average.calculateAverage(num1, num2); System.out.println("The average of " + num1 + " and " + num2 + " is " + average); } } ``` 输出果为: ``` The average of 3.5 and 4.2 is 3.85 ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值