流程控制(循环)

1. if分支语句

首先得了解程序执行 分 顺序执行,分支执行,循环执行。
分支执行 分为 IF 和SWITCH 语句
IF 又分 单分支(if) 和 多分支
(if…else)

2. switch 分支语句

关于switch的用法 直接上代码

int week = 6 ;
switch(week){ //括号内week的类型只能是  byte short int 枚举 string字符串  char 六种
	case 1 :{
			System.out.println("星期一");
			break;//只结束switch分支语句,外部代码依旧执行
			}
	case 2 :{
			System.out.println("星期二");
			break;//也可以用return代替,①终止方法执行(包含switch外部的),即下边代码不执行②返回值
			}
	case 3 :{
			System.out.println("星期三");
			break;
			}
	case 4 :{
			System.out.println("星期四");
			break;
			}
	case 5 :{
			System.out.println("星期五");
			break;
			}
	case 6 :{
			System.out.println("星期六");
			break;
			}
	case 7 :{
			System.out.println("星期日");
			break;
			}
	default:{
			System.out.println("无效");	
	        }	
		}
		

能用switch就用switch ,不能用再用if
关于范围类也只能用if

3. for循环

程序框架:

forint i=0;i<10;i++{
		System.out.println(i);
}

4. while循环

分为do…while 与 while

int i = 0;
while(a<10){
	System.out.println(a);
            }//先判断,后执行


int b = 0;
do{
	System.out.println(b);
  }
 while(b<0);//先执行,后判断

5. break return continue的用法

break 结束当前switch(内不循环),不影响到switch以外(外部循环) 必须置于switch或者循环语句中
return 结束整个方法,会影响switch以外
continue 当continue满足,结束当前循环,进入下次循环;

作业:

在这里插入图片描述

关于博客的作业,我觉得对于这种分支结构的最好方法就是理解代码,所以我这边放了代码上去,
接下来记录下 我对编程作业的思路,以及代码。

1.求1-100里,能被6整除,且能被9整除的数的和

首先关于这个作业的想法就是,是一个累加的过程,因为要判断100以内所有的数,
所以大的框架一定是 for循环,从1加到100。
然后具体里边要求同时被6,9整除,即可以在for循环里加两个if
就框架而言,已经完善,但是有一个问题,如何证明是整除,
或者需要什么途径来表示是被整除呢?
通过查阅资料得到,JAVA中的取余运算,如下:

if(n%m==0){
}
else{
}

刚好也是If来进行判断,所以我根据上边我的思路,进行代码的编写。
代码如下:

public class H_1{
	
	public  static void main(String [] args){
		int Sum = 0;   //定义一个数来存放和
		System.out.println("能同时被6,9整除的数有:");//把每一个满足条件的数都输出,方便检查
		for(int i=0;i<=100;i++){
			if(i%6==0){
				if(i%9==0){
					System.out.println(i);
					Sum = Sum + i;//把每一个满足的数都相加
				}
			}
		}
		System.out.println("能同时被6,9整除的数之和:");
		System.out.println(Sum);
	}	
}

具体运行结果如下:
在这里插入图片描述

2.使用while循环,求 1+11+111+1111+11111+111111

关于本题,我刚看到题目的时候,一脸懵。
while循环是 满足条件,执行程序,
或者先执行程序,再满足条件。跟具体的这个1的相加好像并没有什么关系
于是我又仔细想了想 怎么也想不出利用1到111111的方法
难道 利用了 int整除的方法,忽略余数,由 111111 到 1 嘛,每次对10进行整除
这样好像可以,于是我根据这个思路进行了编写。
但在编写完的同时,我突然想到每次乘10再加一,不就完成了正向的运算嘛
于是我同时写了两种方法。
代码如下:

public class H_2{
	
	public  static void main(String [] args){
		
		int i = 111111 ;//直接从上限 111111开始
		int Sum = 0;    //定义一个变量,用来存和
		while(i>=1){     //因为1也需要相加,所以务必把1加上
			Sum = Sum + i ;
			i = i / 10;
		}
		
		System.out.println("反向和为"+Sum);
		
		
		int n = 1 ; //从下限1开始
		int Sum1 = 0;
		while(n<=111111){  //同理111111也需要加上,所以也需要进行限制
			Sum1 = Sum1 + n;
			n = n * 10 + 1;
		}
		System.out.println("正向和为"+Sum1);
	}	
}
//特别需要注意 因为我采用的为从边界进行限制,所以我的边界在刚满足限制条件的时候,就进行加。所以最后一定要把限制条件的边界也加上,防止遗漏数据
//其实做这类题并不难,但是很多逻辑性思维,会让我们把一些数,特别是边界数忘掉,导致出现问题。

结果如下:
在这里插入图片描述
正方结果都为一样,说明思路应该都没问题。

3.打印乘法口诀表

哇,不知道为什么,关于乘法口诀表
我的第一想法 就是小学的时候,铁皮文具盒上
呢个类似三角形的形状
哈哈哈哈哈
不知道老师要求是什么样子的,呢我就按我想的来好啦!
其实乘法口诀也就是两个变量嘛
左边的乘数,右边的乘数
并且都是依次递加的
所以我的想法是用两个for循环(毕竟都是从1开始嘛不是,这样也好控制)
代码如下:

public class H_3{
	
	public  static void main(String [] args){
		int ji = 0; //定义一个变量Ji,代表乘积
		for(int i = 1; i<=9; i++){
			for(int n = 1; n<=9; n++){
				ji = i * n ;
				System.out.print(n + "*" + i + "=" + ji +" ");
				if (n == i){//我记得乘法表是在两个数相等的情况下进行换行的
				System.out.println();	
					break;
				}
			}
		}

程序执行结果如下:
在这里插入图片描述
其实这个作业最让我纠结的不是逻辑性问题
而是如何输出为三角形的问题
首先 ,三角形的斜边都队应的是两个数相等的时候
也就意味着在这个地方需要进行转折
但是转折的情况下,是在第二个循环内
我当时就选择 break 还是continue
纠结了半天
选择了continue
但是发现结果不对
后来我仔细想了下:
因为是循环套循环
外层循环相当于第一次就是1 ,第二次就是2
而内层循环 每次都是从1到9
所以就意味着,内层循环应该用来做乘法表的第一个数
那么如果说要求跳出循环的话,应该是 乘法表的本行结束
而每一行都是内置循环从1加到每行对应i的过程
所以说 我们应该结束整个内循环
而不是结束内循环的内循环
所以应该用break

总结:
今天的程序处理写着还算可以,毕竟还处于刚起步
课程记录部分偏少
可能是因为感觉很多东西都差不多记得
着重记了一些需要注意 或者说 有区别的点

其实我自己感觉写程序应该是一个机械化 但是 却又快乐的过程:

机械化是因为
我们在发现问题后
提出自己的大致解决思路
就自己每条思路实施相应的代码
就相当于 将我们的思维模块化
而每一个问题 对应拆分为相应的 小模块
而每一个模块 在我们大脑中 有固定的解决办法
类似一个拼积木的过程

快乐是因为
在完成一道一道的题目后
会得到一种无比的满足感
特别是那种挣扎你好久
让你死活想不出来到底该怎么处理才好
让你抓狂 让你想要放弃
可是最后你确把他解决出来
这种满足感
真的会让你觉得之前一切的努力都是值得的

(PS:这些总结里的感想就是写给自己看的,因为我有翻看自己博客的习惯。其实都知道写程序会很累,会掉头发这些,但是既然选择了这条路,就好好走下去嘛,尊重自己的选择,我也是希望自己以后如果真的丧到极致,烦到抓狂的时候,可以看到我今晚写的话。毕竟充实自己,修炼自己,终究是一条充满坎坷的路,要记得为什么上路,要记得自己上这条路时对自己未来的憧憬,毕竟已不再是大一那个懵懂的少年了,没那么多时间供我挥霍了,好歹经历了三年的时光,也该为自己想要的,做出些努力,不是嘛)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值