概述
这两天学循环,循环嵌套有了些新的理解,特此记录.
for循环分类
一类是只需要写对循环次数的,另一类是既要写对循环次数,而且循环变量也需要参与循环语句的.
规律
对于for循环语句
for(int i=m;i<n;i++)(m<=n),取值为m到n-1,循环次数为(n-m)次
for(int i=m;i<=n;i++)(m<=n),取值为m到n,循环次数为(n-m+1)次
for(int i=m;i>n;i++)(m>=n),取值为m到n-1,循环次数为(m-n)次
for(int i=m;i>=n;i++)(m>=n),取值为m到n循环次数为(m-n+1)次
第一类
对于只需要写对循环次数的,只需要保证循环次数对就ok,根据规律,直接用第一条,设置m=0,n=循环次数即可.
第二类
对于既需要写对循环次数又需要循环变量参与循环语句的,以循环变量在循环语句里所需的值确定范围.
举例
第一类
打印倒等腰三角形(以五行为例)
因为不需要用循环变量,所以外层循环m=0,n=5,打印空白的内层循环m=0,n=i(每行有i个空格),打印星号的内层循环m=0,n=5-i(每行有5-i个空格星号)
public class Hj {
public static void main(String[] args) {
for (int i=0;i<5;i++) {
for (int j=0;j<i;j++) {
System.out.print(" ");
}
for (int j=0;j<5-i;j++) {
System.out.print(" *");
}
System.out.println();
}
}
}
第二类
打印99乘法表
外层循环要用到1到9,m=1,n=10
内层循环要用到1到i,m=1,n=i+1
public class Hj {
public static void main(String[] args) {
for (int i=1;i<10;i++) {
for (int j=1;j<i+1;j++) {
System.out.print(String.format("%d*%d=%dt",j,i,j*i));
}
System.out.println();
}
}
}
混合
冒泡排序
将无序数组升序排列 int[] a = {17, 96, 73, 25, 21};
冒泡排序一共需要排列总元素个数-1次,每次排列需用到从第一个位置开始到上一个排列完成的数的向前两位的数(包含此数)
外层循环,一共循环a.length-1次,m=0,n=a.length-1
内层循环,每次从首坐标0开始,循环到坐标为a.length-2-i处,m=0,n=a.length-1-i
观察发现外循环从1开始代码更简洁,优化为
外层循环,一共循环a.length-1次,m=1,n=a.length
内层循环,每次从首坐标0开始,循环到坐标为a.length-1-i处,m=0,n=a.length-i
public class Hj {
public static void main(String[] args) {
int[] a = {17, 96, 73, 25, 21};
for (int i=1;i<a.length;i++) {
boolean flag = true;
for (int j=0;j<a.length-i;j++) {
if (a[j]>a[j+1]) {
a[j] += a[j+1];
a[j+1] = a[j] - a[j+1];
a[j] -= a[j+1];
flag = false;
}
}
if (flag) break;
}
System.out.println(Arrays.toString(a));
}
}
最后
以上就是甜蜜日记本为你收集整理的嵌套for循环的全部内容,希望文章能够帮你解决嵌套for循环所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复