第五天笔记

多重循环和方法

1.程序调试

程序调试debug模式属于我们在日常开发中解决问题最笨,但是也是最有效的方式

此处有图片
在这里插入图片描述

此处有图片
在这里插入图片描述

2.多重循环

循环与循环之间可以互相嵌套,没有上限,通常不超过三层,外层循环变量变化一次,内

层循环变量变化一轮;

(在打印图形的时候:)

1.外层循环控制行数

2.内层循环控制列数

3.打印倒三角或者正三角的时候 第一行需要几个图案 我们计数器就从几开始

4.观察当前图案元素的个数如果是越来越多 计数器自增 如果是 越来越少 计数器自减

5.当我们的计数器 自减的时候 判断条件一定要大于某个值 当我们的计数器自增的时候

一定要小于某个值,否则会在造成死循环

6.打印倒三角的时候,属于依次递减的 所以我们的判断条件不是固定的 否则就是矩形,

我们就找一个每次都在变化的内容,而且的递增的 我们的外层循环变量 i 非常适合 这个角色

package com.qfedu.test1;
/**
 * 	打印平行四边形
 * @author WHD
 *
 */
public class Test3 {
	public static void main(String[] args) {
		// 经过分析
		// 1. 外层循环 控制行数 先编写一个循环5次的外层循环
		// 2.打印倒三角或者正三件的时候 第一行需要几个图案 我们计数器就从几开始
		// 3.观察当前图案元素的个数是越来越多  计数器自增    还是 越来越少  计数器 自减
		// 4.当我们的计数器 自减的时候 判断条件一定要大于某个值 当我们的计数器自增的时候 一定要小于某个值 
		// 否则就会造成死循环
		// 5.左上角的倒三角属于依次递减的 所以我们的判断条件不能是固定的 否则就是矩形
		// 我们就找一个每次都在变换的内容 而且的递增的 我们的外层循环变量 i  非常适合 这个角色
		
		for(int i = 1; i <= 5; i++) {
			// 第一部分
			for (int j = 5; j >= 0; j--) {
				System.out.print(" ");
			}
			
			// 第二部分
			for (int j = 1; j <= 5; j++) {
				System.out.print("*");
			}
			// 第三部分
			System.out.println();
		}
	}
}
package com.qfedu.test1;
/**
 * 	打印正三角形
 * @author WHD
 *
 */
public class Test4 {
	public static void main(String[] args) {
		// 1. 外层循环 控制行数 先编写一个循环N次的外层循环
		// 2.打印倒三角或者正三件的时候 第一行需要几个图案 我们计数器就从几开始
		// 3.观察当前图案元素的个数是越来越多  计数器自增    还是 越来越少  计数器 自减
		// 4.当我们的计数器 自减的时候 判断条件一定要大于某个值 当我们的计数器自增的时候 一定要小于某个值 
		// 否则就会造成死循环
		// 5.左上角的倒三角属于依次递减的 所以我们的判断条件不能是固定的 否则就是矩形
		// 我们就找一个每次都在变换的内容 而且的递增的 我们的外层循环变量 i  非常适合 这个角色
		
		for (int i = 1; i <= 5; i++) {
			// 第一部分 左上角空白
			for (int j = 5; j >= i; j--) {
				System.out.print(" ");
			}
			
			// 第二部分 正三角
			for (int j = 1; j <= 2 * i -1; j ++) {
				System.out.print("*");
			}
			// 第三部分 换行
			System.out.println();
		}
	}
}
3.静态方法
3.1方法的概念和作用

方法是一系列代码指令的集合,用于解决特定的问题,可以重复调用,实现代码的可重复性

3.2方法的定义

public static 返回值类型 方法名称(形参列表){

//方法体

}

package com.qfedu.test4;
/**
 * 	方法的定义
 * @author WHD
 *
 */
public class Test3 {
	/**
	 * 	访问修饰符 + static关键字 + 返回值类型 + 方法名称(形参列表){	   
	 * 		方法体
	 * 	}
	 */
	public static void m1() {
		
	}
}
3.3方法的形参和实参

形参:形式参数,表示在定义方法时书写的参数,相当于局部变量的声明,形参没有个数

上限,形参规定了参数的个数,类型,顺序,这些规定实参必须遵守,也就是实参必须和

符合形参的约束

实参:实际参数,必须遵循形参的约定,可以写对应类型的变量,也可以写对应类型的值

package com.qfedu.test3;

public class Test3 {
	public static void main(String[] args) {
		login("admin", "zz8888"); // 这里的admin  和  zz8888 属于实参
	}
		
	/**
	 * 	userName 和 password都属于形参
	 * 	规定了参数的类型  两个都是String类型
	 * 	参数的个数 两个
	 * 	顺序 必须按照第一个是String,第二个也是String的顺序
	 * @param userName
	 * @param password
	 */
	public static void login(String userName,String password) {
		if(userName.equals("admin") && password.equals("zz8888")) {
			System.out.println("登录成功");
		}else {
			System.out.println("用户名或者密码错误");
		}
	}
	
}
3.4返回值和返回值类型

我们书写的方法如果需要在执行方法以后得到一些内容,那么我们就需要对定义的方法加上返回值:

返回值类型书写位置:public static 返回值类型

返回值可以书写的类型:八种基本数据类型,String,void(表示无返回值)

返回值是写的位置:

使用return关键字来返回值

需求:

1.return之后的value(值)必须和返回值类型匹配

2.在分支结构情况下,必须保证每一个分支下都有返回值

3.在返回值类型为void的方法中,可以使用return,只表示结束方法,但是return以后不能写任何内容

package com.qfedu.test4;
/**
 * 	编写两个方法
 * 	1.用于实现用户登录的功能,必须让用户提供两个参数,一个是用户名,另外一个是密码
 * 	2.用于实现查看所有人员信息的方法,但是在调用此方法之前必须先判断用户是否登录了
 * @author WHD
 *
 */
public class Test4 {
		
	
	public static boolean login(String userName,String password) {
		if(userName.equals("admin") && password.equals("zz1234")) {
//			System.out.println("登录成功");
			return true;
		}else {
//			System.out.println("用户名或者密码错误");
			return false;
		}
	}
	
	public static void getAllInfo() {
		if(login("admin", "zz1234")) { // login("admin", "zz12345") == true
			System.out.println("人员1,信息1");
			System.out.println("人员2,信息2");
			System.out.println("人员3,信息3");
			System.out.println("人员4,信息4");
		}else {
			System.out.println("请先登录");
		}
		
		
	}
	
	public static void main(String[] args) {
		getAllInfo();
	}
	
}
// 返回值类型为void的情况下使用return
package com.qfedu.test3;
/**
 * 	回顾一个关键字 break   break用于switch和循环中
 * 	return关键字两种用法 
 * 	在方法返回值为非void的情况下  表示结束方法并且返回内容 只能在方法的最后一句 
 * 	在有选择结构的情况下 必须保证每一个分支下 都有return
 * 	在方法返回值为void的情况下 可以使用return 表示结束方法 return以后不能加任何内容   
 * 
 * 
 * @author WHD
 *
 */
public class Test7 {
	public static void main(String[] args) {
		m1(20);
	}
	
	public static void m1(int numa) {
		System.out.println("m1方法开始执行");
		if(numa == 20) {
			System.out.println("条件成立");
			return;
//			System.out.println("abcd"); return在这里表示结束方法 但是不会返回内容  因为本方法返回值类型为  void
		}
		System.out.println("m1方法执行完毕");
	}
}
// 分支结构中必须保证每一个分支都有返回值
package com.qfedu.test3;
/**
 * 	编写一个方法 让用户传入一个数字 
 * 	如果是奇数 返回字符串 奇数 
 * 	如果是偶数 返回字符串 偶数
 * 	方法返回值不是void  那么我们可以直接打印或者定义对应类型的变量 来接收
 * @author WHD
 *
 */
public class Test6 {
	public static void main(String[] args) {
		System.out.println("直接输出方法得到的结果打印" + checkNum(21));
		String result  = checkNum(21);
		System.out.println("通过变量接收到的结果打印" + result);
	}
	
	public static String checkNum(int num) {
		if(num % 2 == 0) {
			return "偶数";
		}else if(num % 3 == 0) {
			return "3的倍数";
		}else {
			return "abc"; // 这行代码纯粹为了演示 没有任何意义
		}
	}
}
3.5方法的多级调用

方法和方法之间可以互相调用

package com.qfedu.test3;
/**
 * 	多级调用  方法调方法
 * @author WHD
 *
 */
public class Test8 {
	public static void main(String[] args) {
		m1(); // 当我们调用m1方法 执行顺序为 1 3 4 2
	}
	
	public static void m1() {
		System.out.println("m1方法开始执行"); // 1
		m2();
		System.out.println("m1方法执行完毕"); // 2
	}
	
	public static void m2() {
		System.out.println("m2方法开始执行"); // 3
		System.out.println("m2方法执行完毕"); // 4
	}
	
	
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值