Java循环
1.1 while循环
/*
先判断条件表达式结果是否为true,如果为true执行循环体,执行完循环体之后 再次判断条件表达式结果
如果为true 再次执行循环体;直到条件表达式结果为false的时候 循环结束;
while后面的花括号 里面的代码 称之为 循环体
while循环有可能一次都不执行 当第一次条件判断为false
*/
斐波那契数列
public static void method1(){
int a = 1,i = 20;
int b = 0;
System.out.print(1 + ",");
while( i > 0 ){
int c = a + b;
System.out.print(c + ",");
b = a;
a = c;
i--;
}
}
练习
/*
* 动态录入班级人数和学员成绩,计算班级学员的平均成绩
* 我们可以通过 Scanner 类来获取用户的输入。作用于控制台的输入输出与C里的scanf类似
创建scanner类的对象 Scanner sc=new Scanner(System.in);
*/
private static void method2() {
Scanner sc = new Scanner(System.in);
System.out.println("请录入班级学员人数:");
int stuNum = sc.nextInt();
// 重复执行
int count = 1;
int sum = 0;
while (count <= stuNum) {
//录入学员成绩
System.out.println("请录入第 " + count + " 个学生的成绩");
int score = sc.nextInt();
//成绩累加
sum += score;
count++;
}
System.out.println("sum : " + sum);
System.out.println("avg: " + (sum / stuNum));
}
1.2 do...while 循环
/*
第一次执行循环体之前不用做任何判断;
以后每次执行之前都是先判断条件,条件为true执行循环体,否则循环结束。
*/
斐波那契数列
public static void method3(){
int a = 1,i = 20;
int b = 0;
System.out.print(1 + ",");
do {
int c = a + b;
System.out.print(c + ",");
b = a;
a = c;
i--;
}while (i > 0);
}
练习
/*
* 动态录入班级人数和学员成绩,计算班级学员的平均成绩
*/
private static void method4() {
Scanner sc = new Scanner(System.in);
System.out.println("请录入班级学员人数:");
int stuNum = sc.nextInt();
// 重复执行
int count = 1;
int sum = 0;
do {
//录入学员成绩
System.out.println("请录入第 " + count + " 个学生的成绩");
int score = sc.nextInt();
//成绩累加
sum += score;
count++;
} while (count <= stuNum);
System.out.println("sum : " + sum);
System.out.println("avg: " + (sum / stuNum));
}
1.3 for循环
1.3.1 基本语法
/*
// for循环 是对while循环 写法上 的一种简化
// 1,先执行 int count=0 初始化语句 只执行一次 ;
// 2,判断条件语句结果是否为true ,为true 则执行循环体 否则循环结束;
// 3,然后 循环控制次数变量递增;递增之后继续判断条件语句
*/
for (int i= 0; i < 5; i++) {
System.out.println(i);
}
1.3.2 for的练习
/*
* 动态录入班级人数和学员成绩,计算班级学员的平均成绩
*/
private static void method5() {
Scanner sc = new Scanner(System.in);
System.out.println("请录入班级学员人数:");
int stuNum = sc.nextInt();
// 重复执行
int sum = 0;
for (int count = 1; count <= stuNum; count++) {
//录入学员成绩
System.out.println("请录入第 " + count + " 个学生的成绩");
int score = sc.nextInt();
//成绩累加
sum += score;
}
System.out.println("sum : " + sum);
System.out.println("avg: " + (sum / stuNum));
}
1.3.3 其他写法
/**
* for循环其他变体
*/
private static void method6() {
// 死循环
for (int i = 0; ; i++) {
System.out.println(i);
}
// 死循环
for (; ;) {
System.out.println("hello");
}
}
1.3.4 循环嵌套
private static void method7() {
//循环嵌套 外循环每执行一次 内循环执行3次
for (int i = 0; i < 5; i++) {
System.out.println("外层循环 " + i);
for (int j = 0; j < 3; j++) {
System.out.println(" 内层循环 " + j);
}
}
//循环嵌套
int i = 0;
while (i < 5) {
System.out.println("外层循环 " + i);
int j = 0;
while (j < 3) {
System.out.println(" 内层循环 " + j);
j++;
}
i++;
}
}
1.3.6 for循环的练习题
/*
* 求 0-100之间所有偶数相加的和
*/
private static void method8() {
int sum = 0;
/* for (int i = 0; i <= 100; i++) {
if (i % 2 == 0) {
sum += i;
}
}*/
// 每次递增2
// for (int i = 2; i <= 100; i = i + 2) {
for (int i = 2; i <= 100; i += 2) {
sum += i;
}
System.out.println("sum: " + sum);
}
1.4 关键字
1.4.1 break关键字
/**
* break 终止当前循环(紧跟的循环);
*/
private static void method9() {
//break用在for循环中
for (int i = 0; i < 10; i++) {
if (i == 3) {
//break 终止当前循环(紧跟的循环);
break;
}
System.out.println(i);
}
System.out.println("end");
//break用在while循环中
int i = 0;
while (i < 10) {
if (i == 3) {
break;
}
System.out.println(i);
i++;
}
}
//在嵌套循环中使用
private static void method10() {
//循环嵌套 外循环每执行一次 内循环执行3次
for (int i = 0; i < 5; i++) {
if (i == 3) {
break;
}
System.out.println("外层循环" + i);
for (int j = 0; j < 3; j++) {
/*if (j == 1) {
// break 终止当前循环(紧跟的循环)
break;
}*/
System.out.println("内层循环" + j);
}
}
}
1.4.2 continue关键字
/**
* continue 用来终止当前循环的某一次循环;continue下面的代码不会执行;
*/
private static void method11() {
//continue用在for循环中
for (int i = 0; i < 10; i++) {
if (i == 3) {
// continue 终止当前循环的某一次循环;continue下面的代码不会执行;
continue;
}
System.out.println(i);
}
System.out.println("end");
//continue用在while循环中
//注意点: 如果 i++放在continue下面 会出现死循环
int i = 0;
while (i < 10) {
i++;
if (i == 3) {
continue;
}
System.out.println(i);
}
}
1.4.3 return关键字
return 是用来结束方法的
private static void method12() {
for (int i = 0; i < 5; i++) {
if (i == 3) {
return;
}
System.out.println("外层循环 " + i);
}
System.out.println("end");
}
补充:
工具类Scanner
/**
* Scanner 是个工具类用来模拟和用户之间的交互
*/
public static void method6() {
Scanner sc = new Scanner(System.in);
System.out.println("请输入字符串内容");
// sc.next()阻塞方法 一直等待 直到用户录入
String str = sc.next();
System.out.println("str: " + str);
//
System.out.println("int类型: ");
// sc.nextInt()阻塞方法
int a = sc.nextInt(); //234
System.out.println("a: " + a);
//nextDouble方法接受一个double值
double b = sc.nextDouble();
System.out.println("b: " + b);
}