do/while循环
do{循环体;}while(条件); 先执行循环体,然后进行条件判断,如果条件为true,则执行下次循环;如果 条件为false则终止循环。
- 条件为false则终止循环。 不同于while循环的点:do/while循环至少执行循环体一次,而while循环有可能一次都不执行
例题
1-100求和
package qiu2;
public class Test5 {
public static void main(String[] args) {
int i=0;
int k=1;
do {
i+=k++;
}while(k<101 );
System.out.println(i);
}
}
for循环
语法:for(表达式1;表达式2;表达式3){循环体;}
- 执行表达式1
- 执行表达式2,一般表达式2是一个条件,如果条件为true则执行循环体;如果条件为false则终止循 环
- 执行循环体
- 执行表达式3
- 执行第2步骤
for循环一般用于可以明确循环次数的场景中;while循环一般用于不能预先确定循环执行次数的场景 中;do/while循环一般用于不能预先确定循环执行次数,同时要求循环体至少执行一次的场景中
输入两个正整数m和n,求其最大公约数和最小公倍数
package qiu3;
import java.util.Scanner;
public class Test8 {
public static void main(String[] args) {
//输入数据
Scanner sc =new Scanner(System.in);
int k1 =0;
System.out.println("请输入第一个正整数");
while(true) {
k1 =sc.nextInt();
if( k1<0)System.out.println("请输入一个正确的正整数");
else break;
}
int k2 =0;
System.out.println("请输入第二个正整数");
while(true) {
k2 =sc.nextInt();
if( k1<0)System.out.println("请输入一个正确的正整数");
else break;
}
//获得最小公倍数
int beishu =-1;
int max = Math.max(k1, k2);
for(int k =max ;k<= k1*k2;k++) {
if(k%k1==0 && k%k2==0) {
beishu=k;
break;
}
}
//获得最大公约数
int yueshu = -1;
int min=Math.min(k1, k2);
for(int k=min; k>1;k--) {
if(k1%k==0 && k2%k==0) {
yueshu=k;
break;
}
}
//输出
if(beishu !=-1)System.out.println(k1+"和"+k2+"的最小公倍数为:"+beishu);
if(yueshu==-1)System.out.println(k1+"与"+k2 +"互质");
else System.out.println(k1+"和"+k2+"的最小公约数为:"+yueshu);
}
}