嵌套循环
要了解嵌套循环,首先我们先来一道开胃题
:要我们输入两位数字,取两位数字的最大公约数和最小公倍数
我们看到最大公约数和最小公倍数,首先是先了解什么是约束和什么是倍数。根据百度百科的解释:整数a除以整数b(b≠0) 除得的商正好是整数而没有余数,我们就说a能被b整除,或b能整除a。a称为b的倍数,b称为a的约数。
也就是说我们要找两个数,一个可以同时除以他们两个(这个数取最小的),另一个要找到可以被它们整除的最大数(当然这个就是找的最大的)。根据这些我们可以想到用%=0来找出这两个数字。
循环结构呢我们可以用for或者while,当然我会把这两种都写上。
首先呢,我们先使用for来写一下。
public class Problem {
public static void main(String[] args){
Scanner s = new Scanner(System.in);
System.out.println("请输入第一个数字:");
int a = s.nextInt();
System.out.println("请输入第二个数字:");
int b = s.nextInt();
int min =(a <= b)? a: b;
for(int i =min;i >= 1; i-- ){
if (a % i == 0 && b % i == 0) {
System.out.println("最大公约数为:" + i);
break;//如果不加break出来公约数,循环还会继续
}
}
int max = (a >= b)? a: b;
for(int j = max;j <= a * b ;j++ ){
//a*b是因为是ab的一个公倍数
if(j % a == 0 && j % b == 0){
System.out.println("最小公倍数为:" + j);
break;
}
}
}
}
while
public class Problem {
public static void main(String[] args){
Scanner s = new Scanner(System.in);
System.out.println("请输入第一个数字:");
int a = s.nextInt();
System.out.println("请输入第二个数字:");
int b = s.nextInt();
int min =(a <= b)? a: b;
int i = min;
while(i >= 1){
if (a % i == 0 && b % i == 0) {
System.out.println("最大公约数为:" + i);
break;
}
i--;
}
int max = (a >= b)? a: b;
int j = max;
while(j <= a * b){
if(j % a == 0 && j % b == 0){
System.out.println("最小公倍数为:" + j);
break;
}
j++;
}
}
}
以上分割线讲的是第一道题,下面进行第二道经典例题
:打印九九乘法表
我先去百度复制一个
这个的计算方法我们可以分为单纯的for嵌套或者单纯的while嵌套,然后由内操纵横向,由外操纵纵向,以这种方式来展开九九乘法表
以下是for嵌套样式:
public class Problem02 {
public static void main(String[] args){
for (int i = 1;i <= 9;i++){
for(int j =1;j <= i;j++){
//此处的for循环中,i每一次进入,j都会从1开始进行循环
System.out.print(j+"*"+i+"="+(j * i)+"\t");
}
System.out.println();
}
}
}
while
public class Problem02 {
public static void main(String[] args) {
int i = 1;
//while在此处要重新定义变量
while(i <= 9){
int j = 1;//i放在此处可以方便每次进入j时,j都是从1开始往上加的
while(j <= i){
System.out.print(j + "*" +i + "=" + (j * i)+"\t");
j++;
}
System.out.println();
i++;
}
如何使用for循环嵌套打印出一个三角形
public static void main(String[] args){
for(int i = 1;i <= 5;i++){
for(int j = 5;j >= i;j--){
System.out.print(" ");
}
for(int j = 1;j <= i;j++){
System.out.print("*");
}
for(int j = 1;j < i;j++){
System.out.print("*");
}
System.out.println();
}
}