打卡打卡
哈哈,come on!
局部变量和循环
1.局部变量
局部变量
1.定义的位置 在方法之内
2.没有默认值 必须先赋值再使用
3.作用范围,在当前定位变量紧邻的大括号之内
4.储存位置
基本数据类型 储存在栈(stack)中
引用数据类型 栈中存放的是指向当前对象的引用 真正的值储存在堆(heap)中
5.生命周期 随着方法的入栈(压栈)而生效,随着方法的出栈(弹栈)而死亡
此处有图片
2.循环
2.1while循环
while:当…
必要条件:
1.计数器:i
2.判断条件 if(条件)boolean类型值
3.循环体:System.out.println("");
4.计数器自增:i++
while循环还可以处理循环次数固定的情况,但是更擅长处理循环次数不确定的情况
package com.qfedu.test2;
/**
* 使用while循环实现输出N句好好学习
* while : 当 ……
* 必要条件:
* 1.计数器
* 2.判断条件
* 3.循环体
* 4.计数器自增
* @author WHD
*
*/
public class Test2 {
public static void main(String[] args) {
int i = 1;
while(i <= 10000) {
System.out.println("好好学习" + i);
i++;
}
System.out.println("程序结束");
}
}
package com.qfedu.test2;
import java.util.Scanner;
/**
* 每天检查学习任务
* 上午学习理论
* 下午敲代码
* 如果成绩不合格 则继续执行
* 成绩合格 停止执行
* 分析:
* 1.是否合格可以让用户输入
* 2.根据用户输入的内容来判断是否继续学习
* @author WHD
*
*/
public class Test3 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("今天的学习任务是否合格?y/n");
String answer = input.next();
while(answer.equals("n")) {
System.out.println("上午学习理论");
System.out.println("下午敲代码");
System.out.println("今天的学习任务是否合格?y/n");
answer = input.next();
}
System.out.println("恭喜你,完成任务");
}
}
2.2do-while循环
do:做…
while和do-while区别?
do-while循环是先执行后判断 不管条件是否成立 至少执行一次
package com.qfedu.test3;
import java.util.Scanner;
/**
* 使用do-while循环描述
* 赵四先上机练习 如果合格 则完成 不合格 继续
* do 做……
* while 当……
* while 和 do-while 区别?
* do-while循环是先执行 后判断 不管条件是否成立 至少执行一次
* while循环是先判断后执行 如果条件不成立 一次都不执行
* @author WHD
*
*/
public class Test1 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
String answer; // 先声明
do {
System.out.println("敲代码测试");
System.out.println("检查是否合格?y/n");
answer = input.next();
}while(answer.equals("n"));
}
}
package com.qfedu.test3;
/**
* 使用do-while实现一百遍好好学习
* do-while循环必要条件依然是
* 1.计数器初始化
* 2.循环体
* 3.计数器自增
* 4.判断条件
* @author WHD
*
*/
public class Test2 {
public static void main(String[] args) {
int i = 1;
do {
System.out.println("好好学习" + i);
i++;
}while(i <= 100);
}
}
2.3for循环
for:为了
for循环的必要条件与while,do-while都相同
执行顺序
1.计数器初始化,最先执行,并且只执行一次
2.判断条件
3.循环体
4.计数器自增或自减
以上过程执行完表示循环执行了一轮 下一轮 直接从判断体条件开始
package com.qfedu.test4;
/**
* 使用for循环实现输出100句好好学习
* for循环的必要条件与while,do-while都相同
* 执行顺序
* 1.计数器初始化,最先执行,并且只执行一次
* 2.判断条件
* 3.循环体
* 4.计数器自增或者自减
* 以上过程执行完表示循环执行了一轮 下一轮 直接从判断条件开始
* @author WHD
*
*/
public class Test1 {
public static void main(String[] args) {
for(int i = 1; i <= 100; i ++) {
System.out.println("好好学习" + i);
}
for(int i = 100 ; i > 0; i--) {
System.out.println("新的好好学习" + i);
}
}
}
package com.qfedu.test4;
import java.util.Scanner;
/**
* 通过循环录入5门成绩 并且计算平均分
* 分析:
* 1.首先是需要重复的录入成绩 使用循环
* 2.因为次数确定所以使用for循环 更为简洁
* @author WHD
*
*/
public class Test2 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
double sum = 0;
for(int i = 1; i <= 5;i ++) {
System.out.println("请输入第"+ i +"门成绩");
double score = input.nextDouble();
sum += score;
}
System.out.println("平均分是" + (sum / 5));
}
}
package com.qfedu.test4;
import java.util.Scanner;
/**
* 使用for循环实现加法表
* 分析:
* 1.左侧第一个数是递增的 所以我们可以定义计数器从0 开始 小于等于 我们输入的数
* 2.中间的数是递减的 所以我们可以使用输入的数减去i 得到递减的效果
* 3.最后的结果就是我们输入的数
* 4.中间的 + 号是字符串 =号也是字符串
* @author WHD
*
*/
public class Test3 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("请输入一个数字");
int num = input.nextInt();
for(int i = 0;i <= num;i++) {
System.out.println(i + "+" + (num - i) + "=" + num);
}
}
}
package com.qfedu.test4;
/**
* for循环常见问题
* @author WHD
*
*/
public class Test4 {
public static void main(String[] args) {
// 1. 计数器没有初始化
// int i = 0;
// for(;i < 10; i++) {
//
// }
// 2.没有判断条件
// for(int i = 0;;i++) {
// System.out.println("执行for循环" + i);
// }
// 3.计数器没有变化
// for(int i = 0;i< 10;) {
// System.out.println("计数器没有变化");
// i++;
// }
// 4.for循环括号内只写两个分号;
for(int i = 0;i < 10;) {
System.out.println("死循环");
}
// System.out.println("程序结束"); 因为上边的for循环是死循环 所以 代码不能 执行到这里
// 5.死循环
// for(;true;) {
//
// }
}
}
3.break和continue
3.1break
break:打破,折断
break 关键字可以用switch中表示跳出当前switch之后的代码
也可以用于循环中 表示退出(中断)循环 没有执行完的循环次数 不在执行 直接执行循环以后的代码
break只能用于switch和循环
break通常结合流程控制语句来使用if-else
package com.qfedu.test5;
/**
* break 关键字可以用于switch中 表示跳出当前switch语句 执行switch之后的代码
* 也可以用于循环中 表示退出(中断)循环 没有执行完的循环次数 不再执行 直接执行循环以后的代码
* break只能用于switch和循环
* break通常结合流程控制语句来使用 if - else
*
* @author WHD
*
*/
public class Test1 {
public static void main(String[] args) {
// 使用循环模拟跑圈 跑到第8圈 太累了 不跑了
for(int i = 1; i <= 10; i++) {
// 需要拼接字符串的位置 写上一对双引号 然后双引号中写上两个加号
System.out.println("跑步第"+ i +"圈");
if(i == 8) {
System.out.println("太累了");
break;
// System.out.println("nnnnnn");
}
}
System.out.println("比赛结束");
}
}
package com.qfedu.test5;
/**
* while循环中使用break
* @author WHD
*
*/
public class Test2 {
public static void main(String[] args) {
int i = 1;
while(i <= 10) {
System.out.println("跑步第" + i + "圈");
if(i == 5) {
System.out.println("太累了,退出比赛");
break;
}
i++;
}
System.out.println("程序结束");
}
}
package com.qfedu.test5;
/**
* do-while循环中使用break
* @author WHD
*
*/
public class Test3 {
public static void main(String[] args) {
int i = 1;
do {
System.out.println("跑步第" + i + "圈");
if(i == 9) {
System.out.println("太累了");
break;
}
i++;
}while(i <= 10);
System.out.println("程序结束");
}
}
3.2continue
continue:继续,延续
只能用于循环中,表示跳出本次循环,继续执行下次循环
面试题:
break和continue的区别?
break是中断整个循环,没有执行完的次数,不再执行
continue是跳出本次循环,继续执行下一循环
package com.qfedu.test5;
import java.util.Scanner;
/**
* continue 继续 延续的意思
* continue只能用于循环中
* 表示跳出本次循环 继续执行下一次循环
* break和continue的区别?
* break是中断整个循环,没有执行完的次数,不再执行
* continue是跳出本次循环,继续执行下一循环
* @author WHD
*
*/
public class Test4 {
public static void main(String[] args) {
// 通过循环录入成绩 统计分数大于80的人数占比
Scanner input = new Scanner(System.in);
System.out.println("请输入人数");
int personNumber = input.nextInt();
double sum = 0; // 这个变量用于统计大于80的人数
for(int i = 1; i <= personNumber;i++) {
System.out.println("请输入第"+ i +"个人的成绩");
int score = input.nextInt();
if(score < 80) {
System.out.println("continue执行了" + i);
continue;
}
System.out.println("分数大于等于80,没有跳出循环,没有执行continue");
sum++;
}
System.out.println("大于80的人数占比" + (sum / personNumber * 100) + "%");
}
}
package com.qfedu.test5;
/**
* break和continue对比
* @author WHD
*
*/
public class Test5 {
public static void main(String[] args) {
for (int i = 0; i <= 10 ; i++) {
if(i == 5) {
System.out.println("退出本次循环");
// 将continue改为break查看效果
continue;
}
System.out.println(i);
}
}
}