方法的概念
方法的格式:
修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2…) {
函数体;
return 返回值;
}
不确定返回类型就写void
2.方法的重载及参数传递
在同一个类中,允许存在一个以上的同名方法,只要它们的参数个数或者参数类型不同即可。
方法重载特点
与返回值类型无关,只看方法名和参数列表
在调用时,虚拟机通过参数列表的不同来区分同名方法
// An highlighted block
==练习题==
------------------------------------------------------------------
第一题:分析以下需求,并用代码实现(每个小需求都需要封装成方法)
1.求两个数据之和(整数和小数)
2.判断两个数据是否相等(整数和小数)
3.获取两个数中较大的值(整数和小数)
4.获取两个数中较小的值(整数和小数)
5.否能用一个方法实现3和4的两个功能
public static double jia(int a,double b) {
return a+b;
}
public static boolean bijiao(int a,double b) {
if(a==b) {
return true;
}
return false;
}
public static double bijiaoda(double a , double b) {
if(a>b) {
return a;
}
return b;
}
public static double bijiaoxiao(double a , double b) {
if(a<b) {
return a;
}
return b;
}
//不可以
public static void main(String[] args) {
jia(10,11.0);
bijiao(10,22);
bijiaoda(10,30);
bijiaoxiao(20,99);
}
}
第二题:分析以下需求,并用代码实现
1.将day04作业中第一题和第二题中创建数组及给数组元素的值赋值的操作封装成方法
2.然后按照day04作业中第一题和第二题中的题目要求封装方法完成功能
public static void diYi(int num) {
Random r = new Random();
int[] arr = new int[num];
int count = 0;
int sum = 0;
for (int i = 0; i < arr.length; i++) {
int grade = r.nextInt(101);
arr[i] = grade;
sum += grade;
if (grade < 60) {
count++;
}
}
System.out.println("不及格人数" + count);
System.out.println("平均成绩为:" + (sum / num));
}
public static void diEr(int a ,int b) {
Scanner scn = new Scanner(System.in);
System.out.println("请输入组数:");
int zhu = scn.nextInt();
System.out.println("请输入每组人数:");
int ren = scn.nextInt();
Random ran = new Random();
int[][] arr = new int[a][b];
/*
* 班级平均成绩为 总成绩/总人数
*/
int z_sum = 0;// 班级总成绩和
int z_num = 0;// 班级总人数
int z_pj = 0;// 班级总平均分
int z_count = 0;//总不及格人数
int max = 0;// 班级中单组平均数最大
for (int i = 1; i <=arr.length; i++) {
/*
* 对单个组进行初始化
*/
int count = 0;//单组不及格人数
int sum = 0;//单组总成绩
int pj = 0;//单组平均分
for (int j = 0; j <ren; j++) {
int grade = ran.nextInt(101);
arr[i - 1][j] = grade;
if (arr[i - 1][j] < 60) {
count++;// 每组不及格人数
z_count++;// 总不及格人数
}
sum += grade; //本组总成绩
z_sum += grade; //全班总成绩
pj = sum / ren; //本组平均成绩
z_num++;
System.out.print (arr[i-1][j]+" ");//本组成绩 输出
}
/*
* 判断每一组的平均成绩的大小
* 若小于下一组的成绩自动覆盖否者继续循环
*/
if(max<pj) {
max=pj;
}
//
System.out.println(" ");
System.out.println("第" + i + "组不及格人数为:" + count + "人");
//System.out.println("第"+i+"组的总分和"+sum);
System.out.println("第" + i + "组的平均分:" + (sum / ren));
}
z_pj=z_sum/z_num;
System.out.println("------------------------------");
System.out.println("班级中单组最高平均分为:"+max);
System.out.println("班级中不及格人数为:"+z_count);
System.out.println("班级总平均分为:"+z_pj);
}
public static void main( String[] args) {
Scanner s = new Scanner(System.in);
System.out.println("请输入班级人数:");
int num = s.nextInt();
diYi(num);
Scanner scn = new Scanner(System.in);
System.out.println("请输入组数:");
int zhu = scn.nextInt();
System.out.println("请输入每组人数:");
int ren = scn.nextInt();
diEr(zhu,ren );
}
}
第三题:分析以下需求,并用代码实现
1.键盘录入长方形的长和宽
定义方法计算该长方形的周长,并在main方法中打印周长
2.键盘录入长方形的长和宽
定义方法计算该长方形的面积,并在main方法中打印面积
3.键盘录入圆的半径
定义方法计算该圆的周长,并在main方法中打印周长
4.键盘录入圆的半径
定义方法计算该圆的面积,并在main方法中打印面积
public static int zhouChang(int a, int b) {
int c = (a + b) * 2;
return c;
}
public static int mianJi(int a, int b) {
int s = a * b;
return s;
}
public static double banJing(int a) {
double r = Math.PI;
double c = 2 * r * a;
return c;
}
public static double banJing2(int a) {
double r = Math.PI;
double c = r * a * a;
return c;
}
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
System.out.println("请输入长宽:");
int a = s.nextInt();
int b = s.nextInt();
System.out.println("周长"+zhouChang(a,b));
System.out.println("面积"+mianJi(a,b));
System.out.println("请输入半径:");
int r = s.nextInt();
System.out.println("圆周长"+banJing(r));
System.out.println("圆面积"+banJing2(r));
}
}
今日作业拓展练习(选做)
---------------------------------------------
第四题: 分析以下需求,并用代码实现
1.键盘录入一个整数(正数或者负数都可以,但是符号位不算有效的数字位)
2.定义一个方法,该方法的功能是计算该数字是几位数字,并将位数返回
3.在main方法中打印该数字是几位数
4.演示格式如下:
(1)演示一:
请输入一个整数:1234
控制台输出:1234是4位数字
(2)演示二:
请输入一个整数:-34567
控制台输出:-34567是5位数字
public static int panDan(int a) {
int count=0;
if(a>0) {
while (a>=1){
a/=10;
count++;
}
}else if(a<0) {
while (a<-1){
a/=10;
count++;
}
}
return count;
}
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
System.out.println("请输入一个数");
int a = s.nextInt();
int num =panDan(a);
System.out.println(a+"是一个"+num+"位的数");
}
}
第五题: 分析以下需求,并用代码实现
1.定义一个方法equals(int[] arr1,int[] arr2),功能:比较两个数组是否相等(长度和内容均相等则认为两个数组是相同的)
2.定义一个方法fill(int[] arr,int value),功能:将数组arr中的所有元素的值改为value
3.定义一个方法fill(int[] arr,int fromIndex,int toIndex,int value),功能:将数组arr中的元素从索引fromIndex开始到toIndex(不包含toIndex)
对应的值改为value
4.定义一个方法copyOf(int[] arr, int newLength),功能:将数组arr中的newLength个元素拷贝到新数组中,并将新数组返回,从索引为0开始
5.定义一个方法copyOfRange(int[] arr,int from, int to),功能:将数组arr中从索引from(包含from)开始到索引to结束(不包含to)的元素复制到新数组中
,并将新数组返回
5.1.
public class Test5_1 {
public static boolean equals(int[] arr1, int[] arr2) {
if (arr1 == arr2) {
return true;
} else {
if (arr1.length != arr2.length) {
return false;
} else {
for (int i = 0; i < arr1.length; i++) {
if (arr1[i] != arr2[i]) {
return false;
}
}
}
}
return true;
}
public static void main(String[] args) {
int[] b = { 1, 2, 3, 4 };
int[] a = { 1, 2, 3, 4, 5 };
boolean flag = equals(a, b);
System.out.println(flag);
}
}
5.2
public class Test5_2 {
public static int [] fill(int[] arr,int value) {
for(int i=0;i<arr.length;i++) {
arr[i]= value;
}
return arr;
}
public static void main(String[] args) {
int []arr = {1,2,3,4};
fill(arr,6);
for(int i=0;i<arr.length;i++) {
System.out.println(arr[i]);
}
}
}
5.3
public class Test5_3 {
public static int[] fill(int[] arr, int fromIndex, int toIndex, int value) {
for (int i = fromIndex; i < toIndex; i++) {
arr[i] = value;
}
return arr;
}
public static void main(String[] args) {
int[] arr = { 1, 4, 9, 6, 7 };
Scanner s = new Scanner(System.in);
System.out.println("请输入数字:");
int fromIndex = s.nextInt();
int toIndex = s.nextInt();
int value =s.nextInt();
fill(arr,fromIndex, toIndex, value);
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
}
}
5.4
public class Test5_4 {
public static int[] copyOf(int[] arr, int newLength) {
int[] arr1 = new int[newLength];
for (int i = 0; i < newLength; i++) {
arr1[i] = arr[i];
}
return arr1;
}
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
System.out.println("请输入数字:");
int newlength = s.nextInt();
int[] arr = { 2, 3, 4, 5, 6, 7, 7, 5 };
int[] arr2 = copyOf(arr, newlength);
System.out.println(Arrays.toString(arr2));
}
}
5.5
public static int[] copyOfRange(int[] arr, int from, int to) {
int arr1[] = new int[to - from];
int a = 0;
for (int i = from; i < to; i++) {
arr1[a] = arr[i];
a++;
}
return arr1;
}
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
System.out.println("请输入数字:");
int[] arr = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
int from = s.nextInt();
int to = s.nextInt();
int[] arr2 = copyOfRange(arr, from, to);
System.out.println(Arrays.toString(arr2));
}
}