第5关:掌握数组作为参数的使用
任务描述
本关任务:将考试成绩排序并输出,返回成绩的个数。
相关知识
- 数组作为参数的样例:
public static void main(String[] args) {
// 调用方法时传递一个数组
int [] arrayData = {1 ,2 ,3 };
arrayManage(arrayData);
}
public static void arrayManage(int [] data){
for(int i = 0 ; i < data.length ;i++){
// 打印数组
System.out.println(data[i]);
}
}
- 输出结果。
1
2
3
实现思路
- 定义一个带有数组参数的方法;
- 在方法内部参考第八章数组排序将数组排序,并且打印;
- 返回数组的长度信息。
提示
快速输出数组的方法:System.out.println(Arrays.toString(要输出的数组));
验货啦,验货啦,开始你的任务吧!
编程要求
根据提示,在右侧编辑器Begin-End
处补充代码,程序给出了部分代码,您需要参照实现思路达到 任务描述的需求。
测试说明
程序会对你编写的代码进行测试:
需要你的程序输出下图所示:
开始你的任务吧,祝你成功!
代码:
package setp10;
import java.util.Arrays;
public class HelloWorld {
public static void main(String[] args) {
HelloWorld hello=new HelloWorld();
int[] scores={79,52,98,81};
/********** Begin **********/
//调用方法,传入成绩数组,并获取成绩的个数
int count= hello.sort(scores);
/********** End **********/
System.out.println("共有"+count+"个成绩信息!");
}
/*
* 功能:将考试成绩排序并输出,返回成绩的个数
*
*/
/********** Begin **********/
public static int sort(int[] data ){
for(int i=0;i<data.length-1;i++)
for(int j=i+1;j<data.length;j++){
if(data[i]>data[j]){
int temp=data[i];
data[i]=data[j];
data[j]=temp;
}
}
// 打印出数组
System.out.print("[");
//返回数组中元素的个数
for(int i=0;i<data.length-1;i++)
System.out.print(data[i]+", ");
System.out.print(data[3]+"]");
System.out.println();
return data.length;
}
/********** End **********/
}
第6关:方法的重载
任务描述
本小节需要你掌握一个Java
方法重载的小程序,在每一个重载的方法中打印相应的语句。
相关知识
问: 什么是方法的重载呢?
答: 如果同一个类中包含了两个或两个以上方法名相同,方法参数的个数、顺序或类型不同的方法,则称为方法的重载,也可称该方法被重载了。如下所示 3
个方法名称都为 print
,但方法的参数有所不同,因此都属于方法的重载:
问: 如何区分调用的是哪个重载方法呢?
答: 当调用被重载的方法时,Java
会根据参数的个数和类型来判断应该调用哪个重载方法,参数完全匹配的方法将被执行。如:
public static void main(String[] args) {
// 调用无参的方法
print();
// 调用带有一个字符串参数的方法
print("小强");
// 调用带有一个整型参数的方法
print("老肖",38);
}
运行结果:
无参的print方法
带有一个字符串参数的print方法,参数值为:小强
您好老肖,今年38岁
判断方法重载的依据:
1
、 必须是在同一个类中;
2
、 方法名相同;
3
、 方法参数的个数、顺序或类型不同;
4
、 与方法的修饰符或返回值没有关系。
敲黑板
方法重载:在同一个类中,方法名相同,参数类型不同。
编程要求
在编辑器Begin-End
处对print
方法进行重载,并通过传入不同的参数调用匹配的重载方法。
请在相应行中将代码填写完整。
测试说明
预期输出:
开始你的任务吧,祝你成功!
代码:
package setp15;
/**
* @author tangzhiqiang
* @date 2018-04-25 22:31
*/
public class HelloWorld {
public static void main(String[] args) {
/********** Begin **********/
// 调用无参的方法
print();
// 调用带有一个字符串参数的方法
print("educoder");
// 调用带有一个整型参数的方法
print(666);
/********** End **********/
}
/********** Begin **********/
// 无参print方法的定义
public static void print(){
System.out.println("无参的print方法");
}
// 字符串print方法的定义
public static void print(String name){
System.out.println("带有一个字符串参数的print方法,参数值为:"+name);
}
// 整型print方法的定义
public static void print(int id){
System.out.println("带有一个整型参数的print方法,参数值为:"+id);
}
/********** End **********/
}
第7关:选择题
答案:BDE
第8关:方法通关挑战
任务描述
本关任务:
-
定义一个方法,接收两个
int
类型的参数a
和b
,求两个数的和,方法名为:getSum
; -
定义一个方法,接收三个
double
类型参数a
,b
,c
, 返回这三个数的平均值 返回值类型为double
,方法名为:getAvg
; -
定义一个方法,接收两个整数
a
和b
打印a
行b
列的一个矩形,方法名为:printRect
; -
定以一个方法,接收整形数组为参数,对这个数组进行升序排序,最后输出该数组,方法名为:
sortArr
; -
定义一个方法,完成
99
乘法表的打印,方法名为 :Print99
。
相关知识
编程要求
根据任务描述,在右侧编辑器Begin-End
处补充代码,定义五个方法,并编写代码实现方法对应的功能,达到输出要求。
测试说明
我会对你编写的代码进行测试:
第一题:求和
测试输入:1
,2
预期输出:3
第二题:求平均值
测试输入:1
,2
,3
预期输出:2.0
第三题:输出矩形
测试输入:2
,3
预期输出:***
***
第四题:数组升序排序
测试输入:5
,7
,12
,9
,32
预期输出:5
7
9
12
32
第五题:打印99
乘法表
测试输入:无
预期输出:
终极BOSS
等你来通关,开始你的任务吧!!!
代码:
package setp17;
import java.util.Arrays;
import java.util.Scanner;
public class HelloWorld {
/********** Begin **********/
/**
* 第一题:定义一个方法 接收两个整数类型的参数 a和b,返回两个数的和 返回值类型为int 方法名为:getSum
*/
public static int getSum(int a ,int b){
int sum = a + b;
return sum;
}
/**
* 第二题: 定义一个方法 接收三个double类型参数a,b,c, 返回这三个数的平均值 返回值类型为double 方法名为:getAvg
*/
public static double getAvg(double a ,double b,double c){
double avg = (a + b + c) / 3;
return avg;
}
/**
* 第三题: 定义一个方法 接收两个参数 a 和b 打印a行 b列的一个矩形 不需要返回值 方法名为:printRect
*/
public static void printRect(int a , int b){
for (int i = 1 ; i <= a ;i++) {
for (int k = 1 ; k <= b;k++){
System.out.print("*");
}
System.out.println();
}
}
/**
* 第四题:定以一个方法,接收整形数组 为参数 对这个数组进行升序排序 最后输出该数组 不需要返回值 方法名为 sortArr
*/
public static void sortArr(int[] arr){
for(int i = 0; i< arr.length-1;i++){
for(int j = i+1; j< arr.length;j++){
if(arr[i] > arr[j]){
int tmp = arr[i];
arr[i] = arr[j];
arr[j] = tmp;
}
}
}
for(int i = 0; i< arr.length;i++){
System.out.println(arr[i]);
}
}
/**
* 第五题
* 你只需要实现for 循环括号的内容就可 ,打印语句系统已经给你完成
*/
public static void Print99() {
for (int i = 1 ; i<=9;i++) {
for (int j = 1;j <= i ;j++) {
System.out.print(j + " * " + i + " = " + i * j + "\t");
}
System.out.println();
}
}
/********** End **********/
}