1.while循环控制
循环变量初始化
while(循环条件) {
循环语句;
循环变量迭代;
}
示例代码
public class While01 {
public static void main(String[] args){
int i = 1;
while(i <= 10) {
System.out.println("logic" + i);
i++;
}
}
}
- 循环条件是返回一个布尔值
- 先判断再执行
相关练习
public class While01 {
public static void main(String[] args){
int i = 1;
while ( i <= 100 ) {
if ( i % 3 == 0 ) {
System.out.println(i);
}
i++;
}
}
}
public class While01 {
public static void main(String[] args){
int i = 40;
while ( i <= 200 ) {
if ( i % 2 == 0 ) {
System.out.println(i);
}
i++;
}
}
}
2.do-while循环
循环变量初始化;
do{
循环语句;
循环变量迭代;
} while ( 循环条件 );
- do-while是关键字
- 循环四要素一致,位置不同
- 先执行后判断,至少会执行一次
- 最后有一个分号
注意:i++应放在do循环的外面
示例
public class DoWhile {
public static void main(String[] args){
int i = 1;
do {
System.out.println("logic" + i);
i++;
} while ( i <= 10 );
}
}
练习
public class DoWhile {
public static void main(String[] args){
int start = 1;
int end = 200;
int i = start;
int count = 0;
int condition1 = 5;
int condition2 = 3;
do {
if ( i % condition1 == 0 && i % condition2 != 0 ) {
count++;
}
i++;//注意i++应放在do循环的外面
} while ( i <= end);
System.out.println(count);
}
}
import java.util.Scanner;
public class DoWhile {
public static void main(String[] args){
Scanner myScanner = new Scanner(System.in);
char answer = ' ';
do {
System.out.println("老罗使用闪电五连鞭!");
System.out.println("还不还钱?(y/n)");
answer = myScanner.next().charAt(0);
} while ( answer == 'n' );
System.out.println("终于还钱了。");
}
}
3.多重循环控制(重点!难点!)
- 将一个循环放在另一个循环体内,形成了嵌套循环。其中,for,while,do...while均可作为外层循环和内层循环(建议一般嵌套2层,最多嵌套3层,过多导致代码的可读性很差)
- 实际上,嵌套循环就是把内层循环当成外层循环的循环体 当只有内层循环的循环条件为false时,才会完全跳出内层循环,才可结束外层的当次循环,开始下一次的循环
- 设外层循环次数为m次,内层为n次,则内层循环体实际上需要执行m*n次
public class DoWhile {
public static void main(String[] args){
for ( int i = 0; i < 2; i++ ) {
for ( int j = 0; j < 3; j++ ) {
System.out.println("i = " + i + " j = " + j);
//输出6次 i = , j = ;
}
}
}
}
实例
//化繁为简
//每个班级5名学生
//输入一个班级的成绩
//求出一个班级的平均分
//输入所有班级的成绩
//求出每个班级的平均分
//求出所有班级的平均分
import java.util.Scanner;
public class MulFor01 {
public static void main(String[] args) {
Scanner myScanner = new Scanner(System.in);
double totalScore = 0;//累积所有同学成绩
int pass = 0;//累积及格人数
for ( int j = 1; j <= 3; j++ ) { //j为班级
double sum = 0;//一个班级的总分
for ( int i = 1; i <= 5; i++ ) {
System.out.println("请输入第" + j + "个班第" + i + "个同学的成绩");
double score = myScanner.nextDouble();
if ( score >= 60 ) {
pass++;
}
sum += score;
}
System.out.println("sum = " + sum + "平均分 = " + (sum / 5));
totalScore += sum;
}
System.out.println("totalScore = " + (totalScore / 15));
System.out.println("pass = " + pass);
}
}
//化繁为简
//打印1*1
//打印1*9
//打印1*2 2*2
//打印全部
public class MulFor02 {
public static void main(String[] args) {
int result = 0;//定义j * i的值
for ( int j = 1; j <= 9; j++ ) {
for ( int i = 1; i <= j; i++ ) {
result = i * j;
System.out.print(i + " * " + j + " = " + result + "\t");
}
System.out.print("\n");
}
}
}
(这个九九乘法表花了二十分钟/(ㄒoㄒ)/~~哈哈哈哈,不过还好最后疯狂调试\t和\n的位置,终于给我写出最完美的了!!!我果然是天才哈哈哈(●'◡'●))