****************************************************方法*************************************************
【注意】:每做完一道题,回头总结
今日内容:
方法:
1、无参数、无返回值
2、有参数、无返回值
3、无参数、有返回值
4、有参数、有返回值
方法的调用:
方法:就是一段有名称的代码块,(实现独立的功能)
程序中如果要使用这个功能,调用代码块即可,(通过方法名)
好处:
1)代码复用
2)模块化程序,代码结构更清晰
练习1:编写方法:输入两个数,计算这两个数的和
1)无参数无返回值的方法来写
Ex1.java
package cn.qc.java1706.day5;
import java.util.Scanner;
public class Ex1 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Ex1 e=new Ex1();
//想执行几次就调用几次
//一处编写,处处调用
// e.add();
// e.add();
//有两个数要计算和
e.sum(23232,3534);
}
public void add(){
Scanner ip=new Scanner(System.in);
System.out.println("请输入第一个数:");
int num1=ip.nextInt();
System.out.println("请输入第二个数:");
int num2=ip.nextInt();
int sum=num1+num2;
System.out.println("和为:"+sum);
}
//声明有参数无返回值的方法
//计算两个数的和,要计算的两个数需要别人传递过来
//需要在()里声明两个参数(变量),接收别人传递过来的两个数
public void sum(int num1,int num2){
//可以直接使用参数
int ret=num1+num2;
System.out.println(ret);
}
}
有参数无返回值的方法:
参数:变量
声明变量:数据类型 变量名
作用:在调用方法时,用来接收用户传入的值,在方法体内部可以直接使用变量里的值
public void sum(数据类型 变量名,数据类型 变量名){
}
Ex2.java
package cn.qc.java1706.day5;
public class Ex2 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Ex2 e = new Ex2();
//调用方法时,传递的参数叫做实际参数,简称实参1990,2017
//调用方法时的要求:实参和形参要一一对应(类型、含义)
e.year(1990, 2017);
}
//声明方法时,声明的参数叫做形式参数,简称形参
//year1 year2
public void year(int year1, int year2) {
int count = 0;
for (int i = year1; i <= year2; i++) {
if (i % 4 == 0 && i % 100 != 0 || i % 400 == 0) {
count++;
}
}
System.out.println(year1+"到"+year2+"闰年个数一共为:" + count+"个");
}
}
要求:介绍自己 形参(String name,int age)
方法体:我叫+姓名 我今年+年龄
Ex3.java
package cn.qc.java1706.day5;
public class Ex3 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Ex3 e=new Ex3();
e.intrduse("小花", 20);
}
public void intrduse(String name,int age){
System.out.println("我叫:"+name+",年龄:"+age);
}
}
形参的声明可以有无数个,
【注意】实参和形参在个数、顺序、类型以及含义一定要一一对应
练习:
随意输入三个数,
按顺序输出这三个数
Ex4.java
package cn.qc.java1706.day5;
public class Ex4 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Ex4 e=new Ex4();
e.num(22, 21, 13);
}
public void num(int num1,int num2,int num3){
if(num1>num2){
int t=num1;
num1=num2;
num2=t;
}if(num1>num3){
int t=num1;
num1=num3;
num3=t;
}if(num2>num3){
int t=num2;
num2=num3;
num3=t;
}
System.out.println("从小到大的顺序为:"+num1+","+num2+","+num3);
}
}
要求:声明长度为10的数组,存放任意数,先打印一遍数组里的值,对数组处理,偶数索引的值+5,
再打印一遍数组
Ex5.java
package cn.qc.java1706.day5;
public class Ex5 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] nums={12,23,34,45,67,78,89,90,99,88};
Ex5 e=new Ex5();
e.num(nums);
}
public void num(int[] nums){
System.out.println("打印数组如下:");
for(int i=0;i<nums.length;i++){
System.out.print(nums[i]+" ");
}
System.out.println("");
System.out.println("改变后数组如下:");
for(int i=0;i<nums.length;i++){
if(i%2==0){
nums[i]+=5;
}
System.out.print(nums[i]+" ");
}
}
}
有参数有返回值的方法
返回值:数值,方法处理的结果,返回到(传递回)调用处
语法:
public 返回值的类型 方法名(参数列表){
//方法体代码
return 返回值;
}
声明两个数组,计算得到两个数组中的最大值
进行处理:求和
分析:
参数:int[] ary
返回值: int
见代码Ex6.java
package cn.qc.java1706.day5;
public class Ex6 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Ex6 e=new Ex6();
int[] ary1={66,76,88,77,99,100};
int[] ary2={66,76,88,77,89,77};
//调用有返回值的方法时,最好声明一个变量来接收返回值
int ret1=e.findMax(ary1);
System.out.println("第一个数组中最大值为:"+ret1);
int ret2=e.findMax(ary2);
System.out.println("第二个数组中最大值为:"+ret2);
}
//寻找数组中的最大值
//void和return不能同时存在
public int findMax(int[] ary){
int max=0;
for(int i=0;i<ary.length;i++){
if(ary[i]>max){
max=ary[i];
}
}
//return 返回
//return后面的值的类型一定要和方法的返回值类型一致
return max;
}
}
Ex7.java
package cn.qc.java1706.day5;
public class Ex7 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Ex7 e=new Ex7();
int[] ary1={66,77,88,93,97};
float ret1=e.findAvg(ary1);
System.out.println("5个成绩的平均分为:"+ret1);
}
public float findAvg(int[] ary){
int sum=0;
for(int i=0;i<ary.length;i++){
sum+=ary[i];
}
float avg=sum/ary.length;
return avg;
}
}
Ex8.java
package cn.qc.java1706.day5;
import java.util.Scanner;
public class Ex8 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner ip=new Scanner(System.in);
System.out.println("请输入第一个数:");
int num1=ip.nextInt();
System.out.println("请输入第二个数:");
int num2=ip.nextInt();
Ex8 e=new Ex8();
int ret1=e.max(num1, num2);
System.out.println("最大公约数为:"+ret1);
int ret2=e.min(num1, num2);
System.out.println("最小公倍数为"+ret2);
int ret=ret1+ret2;
System.out.println("最大公约数和最小公倍数的和为"+ret);
}
public int max(int num1,int num2){
int min=num1<num2?num1:num2;
int sum=0;
for(int i=min;i>0;i--){
if(num1%i==0&&num2%i==0){
sum=i;
break;
}
}
return sum;
}
public int min(int num1,int num2){
int sum=0;
int max=num1>num2?num1:num2;
for(int i=max;;i++){
if(i%num1==0&&i%num2==0){
sum=i;
break;
}
}
return sum;
}
}
【注意点】
1)有返回值类型,在方法体中一定要有return
2)return 后面的类型一定要和方法返回值的类型一致
3)void和return在同一方法中不能同时出现
4)return值 一定是方法体中最后一条语句
练习:有参数有返回值类型的方法
数组里存放5个成绩,调用方法来计算成绩的平均分,返回平均分
随意接受两个数,获取这两个数的最大公约数和最小公倍数,求和
*****************************************一周总结:*************************************************
记住且理解内容
1、数据类型 及长度 8种
int 4字节 double 8字节 boolean 1字节1/8字节 short2字节 long 8字节 char 2字节 float 4字节 byte 1字节
自动转:小的往大的转,同类型之间转换
强制转:大的往小的转,会失去精度
double dpi=3.14;
float fpi=(float)dpi;
2、运算符的使用 理解
运算符的优先级别:算术(+ - * / %)、比较(> >= < <= == !=)、逻辑(&& || !)、赋值(= += -= *= /= %=)
重点:三目运算符
表达式1?表达式2:表达式3;
重点:单目运算符
++ --
3、选择结构
if switch用法及注意点:
4、循环结构
哪些循环 语法 执行过程(重点)
循环的特点
循环两要素:条件 循环体
注意点:死循环 for三个表达式是否必须有
5、数组
什么是数组?
概念、特点、好处
索引 索引范围 数组元素
如何访问数组元素 数组遍历(三种遍历方式for while do)
二维数组 重点:存储结构、如何遍历
6、方法
概念、好处
语法:声明的语法(各种方法)
调用的语法
灵活运用:
1、利用循环我们的各种算法
斐波那契数列
最小公倍数、最大公约数
素数之和
打印回文数(水仙花数)
与7相关的数(包括各位7十位7、7的倍数)
数的反转(降位)
打印图形(直角三角形,等腰三角形,菱形,对角线)
2、数组的
数组值的复制
数组元素的倒转
排序
元素重复的个数
元素出现个数
二维数组:横向计算 纵向计算等
3、方法的应用
4、讲解过的作业题
下周:面向对象