以前学习C语言中经常遇到这种需求
/*
打印出三角形星号:
*****
****
***
**
*
或者
*
**
***
****
*****
*/
今天就用java的for循环嵌套来实现,首先我们想到
//使用for循环嵌套来实现
for(int i=1;i<=5;i++){//控制行数
for(int j=1;j<=4;j++){//控制列数
System.out.print("*");
}
System.out.println("");
}
/*会得到一个行数为5,列数为4的矩形
****
****
****
****
****
*/
既然已经得到这个重要的关系,那么我们的正三角和倒三角就可以实现了
//正三角的实现
//考虑到每行*数的数量是变化的,所以引入一个新的变量来控制它。
int n=1;
for(int i=1;i<=5;i++){//外循环
for(int j=1;j<=n;j++){//内循环
System.out.print("*");
}
n++;
System.out.println("");
}
//倒三角的实现
//考虑到每行*数的数量是变化的,所以引入一个新的变量来控制它。
int n=5;
for(int i=1;i<=5;i++){//外循环
for(int j=1;j<=n;j++){//内循环
System.out.print("*");
}
n--;
System.out.println("");
}
然后我们来看看for循环中continue的用法
for(int x=0;x<10;x++){
if(x%2==0){
continue;//跳过本次循环,开始下一次
}
System.out.println("x="+x);
}
/*这段代码最后作用就相当于打印出了所有的奇数
*/
再用for语句实现一个九九乘法表
for(int i=1;i<=9;i++){//外循环
for(int j=1;j<=i;j++){//内循环
System.out.print(j+"*"+i+"="+j*i+"\t");//“\t”一个制表符table
}
System.out.println("");
}
/*运行结果如下:
1*1=1
1*2=2 2*2=4
1*3=3 2*3=6 3*3=9
1*4=4 2*4=8 3*4=12 4*4=16
1*5=5 2*5=10 3*5=15 4*5=20 5*5=25
1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36
1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49
1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64
1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81
*/
再实现一下选择排序,选择排序(以升序排列为例)就是先使用数组第一个数与其他所有数一一比较,如果两数相比,如果前者更大,那么就互换位置,反之则不换,一轮比较完之后,排除第一个,后边的继续用这种方法比较,直至完全比完,升序排列也就完成了。
int[] array={23,1,25,12,66,0};//随便定义了一个数组
for (int i=0; iarray[j])
{//不引入第三个变量的方法互换,缺点:数据过大时,可能造成越界
array[i]=array[i]+array[j];
array[j]=array[i]-array[j];
array[i]=array[i]-array[j];
}
}
}
for (int n=0; n
随后,我们实现一种常用的冒泡排序法,冒泡排序法(以降序排列为例)就是每两个相邻的数据相互比较,如果前者更大,那么就互换位置,一轮比较后,最大的也就跑到了最后边,这就是所谓的冒泡。
int[] array={23,1,25,12,66,0};//随便定义了一个数组
for (int i=0; iarray[j+1])
{//不引入第三个变量的方法互换,缺点:数据过大时,可能造成越界
array[j+1]=array[j+1]+array[j];
array[j]=array[j+1]-array[j];
array[j+1]=array[j+1]-array[j];
}
}
}
for (int n=0; n