「这是我参与11月更文挑战的第13天,活动详情查看:2021最后一次更文挑战」。
循环结构
循环结构的4个要素:
一初始化条件
二循环条件(boolean类型)
三循环体
四迭代条件
循环嵌套:内层循环遍历一遍相当于外层循环执行一次
技巧:外层循环控制行数,内层循环控制列数
break
break用于跳出循环和switch—case结构
for循环
for(一,二,四){
三
}
//练习
int num=1;
for(System.out.print('a');num<=3;System.out.print('b'),num++){//i在for循环内有效,出了for循环无效
System.out.print('c')
}//结果abcbcbc
//注意:输出语句是print不是println不需要换行
例题一(循环输出1到150)
/**
* 编写程序从1循环到150,并在每行打印一个值,另
* 外在每个3的倍数行上打印出“ foo",
* 在每个5的倍数行上打印“biz",
* 在每个7的倍数行上打印输出“baz”。
*/
public class ForText {
public static void main(String[] args){
for(int i=1;i<=150;i++){
System.out.print(i);
if(i%3==0)
System.out.print(" foo");
if(i%5==0)
System.out.print(" biz");
if(i%7==0)
System.out.print(" baz");
System.out.println();
}
}
}
例题二(最大公约数、最小公倍数)
import java.util.Scanner;
/**
* 输入两个正整数m,n求其最大公约数和最小公倍数
*/
public class ForText1 {
public static void main(String[] args){
Scanner scan=new Scanner(System.in);
int m= scan.nextInt(),n= scan.nextInt();
//最大公约数
for(int i=m;i>=1;i--){
if(m%i==0){
if(n%i==0) {
System.out.println(i);
break;
}
}
}
//最小公倍数
for(int i=m;i<=n*m;i++){
if(i%m==0){//两个if可以合并成一个if(i%m==0&&i%n==0)
if(i%n==0){
System.out.println(i);
break;
}
}
}
}
}
while循环
while(){//for循环和while循环可以相互转化
//但for循环和while循环初始化条件的作用域不一样
}
do—while循环
do{//先执行,后判断,while是先判断,再执行
//do---while 循环至少执行一次
}while;//注意有分号
循环例题
例题一(无线循环读取整数,并终止)
无线循环 while(true)或者for(;;)
import java.util.Scanner;
/**
*从键盘读入个数不确定的整数,并判断读入的正数和负数的个数,输入为0时结束程序。
*/
public class EgFor {
public static void main(String[] args){
Scanner scan=new Scanner(System.in);
while(true){//true可以写成其他只要恒为真即可,例如1==1
int shuru= scan.nextInt();
int zheng=0,fu=0;
if(shuru>0)
zheng++;
else if(shuru<0)
fu++;
else
break;
}
//上述while可以改成for
for(;;){
int shuru= scan.nextInt();
int zheng=0,fu=0;
if(shuru>0)
zheng++;
else if(shuru<0)
fu++;
else
break;
}
//另一种方法
int i;
while((i=scan.nextInt())!=0){
int zheng=0,fu=0;
if(i>0)
zheng++;
else if(i<0)
fu++;
}
}
}
例题二(因子相加)
/**
* 一个数如果恰好等于它的因子之和,这个数就称为"完数"。
* 例如6=1十2+3程找出1000以内的所有完数。
* (因子:除去这个数本身的其它约数)I
*/
public class WanNumber {
public static void main(String[] args){
for(int i=3;i<=1000;i++){
int sum=0;
for(int j=1;j<i;j++){//注意:因为不能有它本身,所以不能有等号
if(i%j==0){
sum+=j;
}
}
if(sum==i)
System.out.println(i);
}
}
}
特殊关键字的使用(break、continue)
| 使用范围 | 作用 | |
|---|---|---|
| break | switch—case 循环结构中 | 跳过 结束当前循环 |
| continue | 循环结构中 | 结束当次循环(1次) |
**break、continue后面不能声明执行语句,否则编译都过不去,注意:循环外不俗哎后面,算外面 **
break、continue结束指定循环
public class BreakText {
public static void main(String[] args){
for(int i=1;i<=4;i++){
for(int j=1;j<=4;j++){
if(j%4==0)
break;//break 默认结束最近的一个for循环
}
}
//想要用break结束指定的for循环
lab:for(int i=1;i<=4;i++){//lab是标识符,自己定义
for(int j=1;j<=4;j++){
if(j%4==0)
//break lab;//break 结束指定的for循环(给for加上标识,再break后加上标识)
continue lab;//结束指定循环的当次循环
}
}
}
}
return
结束当前方法(相当于结束C中的函数)