for循环
作用:主要解决执行重复代码的问题,for一般用于已知重复次数的循环,不知重复次数但是知道结束条件的循环用while
循环的四要素:
1,循环的初始化(循环从什么时候开始执行)
2,循环继续条件(循环何时结束)
3,循环体(被多次执行的代码块)
4,循环的周期,步长,间距(当前循环和下一次循环之间的变更)
for(1循环的初始化;2循环的继续条件;4循环的步长){
3循环体
}
我们可以用i来表示行数,i=7,就按照第四行来说,数字的左边是空格,空格的变化规律是4-i,所以空格语句就是
for(int i=1;i<=4-i;i++){
System.out.print(" ");
}
i=4,第四行的数值从左到右是4321234,可以看做是y值,x值可以看做-3-2-10123,x值用i表示就是-(i-1)到i-1,
y值用x表示就是Math.abs(x)+1,那么我们就可以写出语句了
for(int i=1;i<=4;i++){ //表示行数
for(j=-(i-1);j<=i-1;j++){ //表示x值
System.out.print(Math.abs(j)+1);
}
}
最后语句就是:
public static void main(String[] args){
for(int i=1;i<=7;i++){
for(int k=1;k<=7-i;k++){
System.out.print(" ");
}
for(int j=-(i-1);j<=i-1;j++){
System.out.print(Math.abs(j)+1);
}
System.out.println();
}
运行结果就是:
eg2:
对于第一个图案:i表示行数,i=6,当i=6的时候,123456,可以看做是y值,x值就是123456,那么x的范围就是1到i,y就是y=x,所以语句就是
for(int i=1;i<=6;i++){ //行数
for(int j=1;j<=i;j++){
System.out.print(j)
}
}
运行结果就是:
eg3:
从第三行看吧,i=3,x的最小取值范围都是1,最大取值范围就是7-i,那么y值还是等于x值
所以语句就是:
for(int i=1;i<=6;i++){//行数
for(int j=1;j<=7-i;j++) //x值
System.out.print(j);
}
}运行结果就是:
eg3;来看第三行i=3,同样x的取值范围是1到i,y的值就是-x+4,
那么第n行就是-x+n+1,所以语句就是
for(int i=1;i<=3;i++){ //行数
for(int j=1;j<=i;j++){ // x值
System.out.print(-j+i+1) // y值
当然空格代码就简单了
运行结果就是:
eg4:同样i的值是123456,x的值最小是1,最大就是7-i,y的值就是x的值,代码就是
for(int i=1;i<=6;i++){ //行数
for(int j=1;j<=i-1;j++){ // 空格数
System.out.print(" ");
}
for(int k=1;k<=7-i;k++){
System.out.print(k);
}
System.out.println();
运行结果就是:
eg6:
同样的方法当i=4时,x值是-3到3,那么x取值范围就是-(i-1)到i-1,y值就是2的3-x的绝对值,第i行就是2的i-1-x的绝对值,代码如下:
for(int i=1;i<=9;i++){
for(int j=1;j<=9-i;j++){
System.out.print(" ");
}
for(int k=-(i-1);k<=i-1;k++){
System.out.printf("%4d",(int)Math.pow(2,Math.abs(Math.abs(k)-i+1)));
}
System.out.println();
}
}
结果:
总之对于这样的for嵌套循环题,就先找出x值,x值和行数i有什么关系,找出关系,然后通过x值求出y值,就这么简单
for循环的一些其他题:
求两个数的最大公约数
public static void main(String[] args){
System.out.print("请输入两个数");
Scanner scanner=new Scanner(System.in);
int n1=scanner.nextInt();
int n2=scanner.nextInt();
int gcd=1;
for(int i=n1<n2?n1:n2;i>=2;i--){
if(n1%i==0&&n2%i==0){
gcd=i;
break;
}
}
System.out.print("最大公约数是 "+gcd);
}
}
:
import java.util.Random;
import java.util.Scanner;
class test01{
public static void main(String[] args){
boolean flag=true;
int count=0;
for(int i=2;i<=1000;i++){
for(int j=2;j<=i-1;j++){
if(i%j==0){
flag=false;
break;
}
}
if(flag){
count++;
System.out.print(i+" ");
if(count%8==0){
System.out.println();
}
}
flag=true;
}
}
}
eg:
import java.util.Random;
import java.util.Scanner;
class test01{
public static void main(String[] args){
int count=0;
for(int i=101;i<=2100;i++){
if(i%400==0||i%4==0&&i%100!=0){
count++;
System.out.print(i);
if(count%10==0){
System.out.println();
}
}
}
System.out.println();
System.out.print("count is "+count);
}
}
eg:
import java.util.Random;
import java.util.Scanner;
class test01{
public static void main(String[] args){
int sum=0;
for(int i=1;i<=1000;i++){
for(int j=1;j<=i/2;j++){
if(i%j==0){
sum+=j;
}
}
if(sum==i){
System.out.print("完全数 "+i);
}
sum=0;
}
}
}