Java学习日志Day5_百钱买百鸡、方法

一、实战:百钱买百鸡

example:

5文钱可以买1只公鸡,
3 文钱可以买一只母鸡,
1文钱可以买3 只小鸡。
用100 文钱买100 只鸡,那么各有公鸡、母鸡、小鸡多少只?

/*
分析:
	当前公鸡,母鸡,小鸡三个变量:分别使用x,y,z
	x,y,z 三个未知数:使用传统比较麻烦

	公鸡的数量:			5文钱一只(100元钱----公鸡) :20
	母鸡的数量:			3文钱一只(100元素----母鸡) :33
	小鸡的数量:        	z = 100 -x - y ;

	for循环遍历:将x,y的数量一一获取
	
		x :0 -20 
		y: 0 - 33
		z = 100 -x - y ;
		
		需要满足条件:
			1)5*x + 3*y + z == 100
			并且
			2)小鸡的数量  z % 3 == 0	

	在工具:idea/eclipse中使用debug模式启动:
	当程序出问题/或者是 看一下程序的运行的先后顺序: 方便开发者观察代码!

	在工具中:在方法中有效代码的第一行打断点: 在idea中代码的左边行号位置!
*/

//code:
class ChickenPurchase{
	public static void main(String[] args){
		
			//for循环:先去遍历 公鸡 数量
		for(int x = 0 ; x <= 20 ; x ++){
			//x的数量获取到 :公鸡 
			for(int y = 0 ; y <= 33 ; y ++){
					//母鸡的数量
					//小鸡的数量
				int z = 100 - x - y ;
						//满足的条件
						//三个数据的总价钱100
				if((5*x + 3*y + z/3 ==100) && (z % 3 == 0) ){
								//分别输出x,z,z
						System.out.println("公鸡的数量是:"+x+
						",母鸡的数量是:"+y+",小鸡的数量是:"+z) ;
				}
			}
		}
	}
}

二、方法

  1. 定义:

将这多行代码包起来,然后为这一个代码块起一个名字,以后在使用到业务功能的时候,只需要通 "这个名字"来调用即可!

将某一个业务逻辑使用独立的{}包起来,然后起名字→符合"方法的标识符的规则"

example:

键盘录入的时候 录入int类型
int number = 键盘录入对象.nextInt() ;

  1. 方法的定义规则:

(1). 有具体返回值类型的方法定义:(固定写法)

				public static 返回值类型 方法名称 (形式参数列表){
						方法业务逻辑;
						//return;
				}

1). 有返回值类型的方法定义解释说明:

①. public: 公共的,公开的 权限修饰符

②. static: 静态的(面向对象)

③. 返回值类型:
数据类型 :目前—基本数据类型,以后使用引用数据类型;

④. 方法名称:符合 "标识符"的规则:小驼峰命名法(多个单词)

⑤. 形式参数列表:
形式参数类型1 变量名1 ,形式参数类型 变量名2…

形式参数类型:数据类型 : 目前—基本数据类型,以后使用引用数据类型

变量名:符合 "标识符"的规则 (小驼峰命名法(多个单词) )

⑥. 方法体中中{}----> 携带一个关键字return :结束当前这个方法并且有一个结果;

2). 有返回值类型的方法的调用 :

①. 单独调用 :
没有意义:在功能模块中,(代码块中),有返回值类型的方法:业务,返回结果!
在调用者位置输出—main方法中调用这个方法

②. 输出调用
可以用:不建议,相同获取的结果数据在进行操作,无法操作!

③. 赋值调用(推荐)

3). 有返回值类型的方法的注意事项:

①. 方法与方法是平级关系 ,只能调用对方,不能去嵌套使用;

②. 定义方法需要明确:
①. 明确返回值类型;
②. 明确参数类型以及参数个数;

③. 方法的形式参数必须携带数据类型,否则报错(编译通不了);
Java是强制类型语言 ---- 前端:javascript(弱类型语言) 定义变量var
public static int add(int a,int b){}

function add(a,b){}

④. 返回结果类型需要和最终的接收结果一样!
保证方法体中的类型一致:考虑数据类型;
保证:接收的结果类型和方法中携带返回的结果类型一致!

example:
有返回值类型的方法:

class FunctionDemo{
	public static void main(String[] args){
		//定义两个变量
		int a = 10 ;
		int b = 20 ;
		
		//a,b:实际参数
		
		//赋值调用
		int result = addNumber(a,b) ; //10,20
		//可以继续使用result数据
		System.out.println("result:"+result) ;
		
	}
	
	/*
		求两个数据之和! (类型:int)
			
		public static 返回值类型 方法名称(形式参数类型1 变量名1 ,形式参数类型 变量名2...){
		
		需要通过义务逻辑
		return 结果数据;
	}
	*/
	
	public static int addNumber(int a,int b){ 		//a,b形式参数 
	
			return a + b ;
	}
}

(2). 没有返回值类型的定义:(固定的格式)

	public static 返回值类型 方法名(形式参数类型1 变量名1 ,形式类型2 变量名2...)
	{
		
		//业务
		//获取结果

	}

1). 解释说明:
①. public static :固定写法

②. void:关键字
Java中规定:针对没有具体返回值的结果的时候,但是方法中必须"返回值类型"
使用void来替代"返回值类型" :满足格式要求!
③. 方法名称符合 "标识符"的规则:小驼峰命名法(多个单词)

④.形式参数列表:
形式参数类型1 变量名1 ,形式参数类型 变量名2…

形式参数类型:数据类型 : 目前—基本数据类型,以后使用引用数据类型

变量名:符合 "标识符"的规则 (小驼峰命名法(多个单词) )

2). 没有返回值类型的方法的调用 :

①. 单独调用 :
example:

		printStar(5,6) ;
		System.out.println("----------") ;
		printStar(6,7) ;

②. 输出调用:(不可以)

		//输出调用?  不可以
		System.out.printnln(printStar(5,6)) ;

③. 赋值调用:(不可以)

		//赋值调用 :用不了: 没有结果
		void v = printStar(5,5) ;	//错误: 非法的表达式开始 :void只是替代 "返回值类型"

3). 没有返回值类型的方法的注意事项:

两个明确:
①. 明确返回值类型: 没有具体结果: void 代替;
②. 明确参数类型以及参数个数;
int 行数和列;

example:
没有返回值类型的方法:

class FunctionDemo2{
	public static void main(String[] args){
		
			//for循环的嵌套
		for(int x = 0  ; x < 4 ; x ++){			//控制行数
			for(int y = 0 ; y < 5 ;y ++) {		//控制列数
					System.out.print("*") ;
				
			}
			System.out.println() ;
		}
		System.out.println("-------------------------------------") ;
		
		//单独调用
		printStar(5,6) ;
		System.out.println("----------") ;
		printStar(6,7) ;
	}
	
	public static void printStar(int m,int n){
		for(int x = 0  ; x < m ; x ++){				//控制行数
			for(int y = 0 ; y < n ;y ++) {			//控制列数
					System.out.print("*") ;
				
			}
			System.out.println() ;
		}
	}
}

examples:


/*
	使用方法改进!(定义方法的时候:两个明确)
	键盘录入两个数据,比较两个数据的最大值
	键盘录入三个数据,比较三个数据的最大值
*/

import java.util.Scanner; 

class Test{
	public static void main(String[] args){
		
		键盘录入两个数据,比较两个数据是否相等
		Scanner sc = new Scanner(System.in) ;
		
		
		//提示并录入数据
		System.out.println("请输入第一个数据:") ;
		int a = sc.nextInt() ;
		
		System.out.println("请输入第二个数据:") ;
		int b = sc.nextInt() ;
		//调用方法
		boolean flag = compare(a,b) ;
		System.out.println("flag:"+flag) ;
		
		System.out.println("-------------------------------------") ;
		
		//键盘录入三个数据,比较三个数据的最大值
		
		System.out.println("请输入第一个数据:") ;
		int m = sc.nextInt() ;
		
		System.out.println("请输入第二个数据:") ;
		int n = sc.nextInt() ;
		
		System.out.println("请输入第三个数据:") ;
		int z = sc.nextInt() ;
		
		//调用方法
		int max = getMax(m,n,z) ;
		System.out.println("三个数据中的最大值是:"+max) ;
	}
	
	/*
		比较三个数据的最大值
		两个明确
		明确返回值类型:	int
		明确参数类型以及参数 个数
			int,三个
	*/
	public static int getMax(int a,int b,int c){   //形式参数必须带类型:Java强类型语言
		
		//可以使用三元+中间变量
		//可以使用if...else...
		//定义变量
		int max ;
		if(a>b){
			if(a>c){
				max = a ;
			}else{
				max = c ;
			}
			
		}else{
			if(b > c){
				max = b ;
			}else{
				max = c ;
			}
		}
		return max ;
	}
	
	
	/*
		比较两个数据是否相等
		两个明确
			1)明确返回值类型:  boolean
			2)明确参数类型以及参数个数
				int类型	 和2个参数
	*/
	public static boolean compare(int x,int y){
		
		// boolean flag = (x == y )? true :false ;
		//return flag ;
		
		//改进
		return x == y ;
	}
}
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

igfff

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值