JAVA的多重循环的练习

1、多重循环的概念:

多重循环就是一个循环里面包含着一个完整的循环,一般不超过三个循环。

2、解释几个词的含以及作用。

continue:只能在循环语句中使用,跳过循环体后面的语句,执行一次,一般和条件语句一起使用;

break:通常和switch或者循环语句中使用;终止循环内的语句,跳转到循环外的下一条语句;

return:结束当前方法的执行并退出,返回到主程序外。

debug:方便查询调试程序。

3、下面我就来列举一些循环语句中常出现的例子。

3.1 输出一个乘法口诀表

public static void main(String[] args) {
        int i=1,j=1;
        for(i=1;i<=9;i++)
        {
            for(j=1;j<=i;j++)
            {
                System.out.print(j+"*"+i+"="+i*j+"\t");
            }
            System.out.println();
        }
    }

 

3.2将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5

public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.println("请输入一个数:");
        int Num = input.nextInt();
        System.out.print(Num+"=");
        int k = 2;
        while (Num > 1) {
            if(Num==k){
                System.out.println(Num);
               break;
            }
            if(Num%k==0)
            {
                System.out.print(k+"*");
                Num=Num/k;
                continue;
            }
                k++;

        }
    }

分析:

(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。

(2)如果n不等于k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数n,重复执行第一步。

(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步

比如输入90

 3.3求 s=a+aa+aaa+....aaa..a的值,其中a是数字;比如3+33+333, 重点是先求出每一位的数

  public static void main(String[] args) {
        int s1=0,s2=0,i=1;
        Scanner input =new Scanner(System.in );
        System.out.print("请输入一个数:");
        int a=input.nextInt();
        for(i=1;i<a;i++)
        {
            s1 = 10 * s1 + a;
            System.out.print(s1+"+");
            s2=s2+s1;
        }
        if(i==a)
        {
            s1 = 10 * s1 + a;
            System.out.print(s1);
            s2=s2+s1;
        }
        System.out.print("=");
        System.out.print(s2);
    }

 3.4求一个数加上100,是一个数的平方,在加上168,是另一个数的平方

public static void main(String[] args) {
        int s=0,y=0;
        for(int i=1;i<=100000;i++) {
           for(int j=i+1;j<=100000;j++)
            if (j*j-i*i==168) {
                if(i*i-100>0) {
                    System.out.println(i * i - 100);
                }
            }
        }
    }

重点在于,J*J-i*i=168 的关系,

 3.5用* 打出一个菱形来

 public static void main(String[] args) {
        for(int i=1;i<=5;i++)
        {
            for(int j=1;j<=5-i;j++)
            {
                System.out.print("  ");
            }
            for (int j=1;j<=2*i-1;j++)
            {
                System.out.print("* ");
            }
            System.out.println();
        }
        for(int i=1;i<=4;i++)
        {
            for(int j=1;j<=i;j++)
            {
                System.out.print("  ");
            }
            for (int j=1;j<=9-2*i;j++)
            {
                System.out.print("* ");
            }
            System.out.println();
        }
    }

分析:先做三面的三角形,在做下面的三角形,可以分析行与列的关系,打印不同的形状,比如梯形,空心的菱形等。

3.6一个分数列 2/1 3/2 5/3 8/5....求前20项的和

public static void main(String[] args) {
             int a=1,b=2,c;
             double s=0.0;
             for (int i=1;i<=20;i++)
             {
                 s=s+(double) b/a;
                 c=b;
                 b=a+b;
                 a=c;
             }
        System.out.println("前二十项的和:"+s);

 这题主要分析出上一个数的分子,作为下一个数的分子,只需要将两个数交换一下位置就ok了。

3.7对十个数进行排序

 public static void main(String[] args) {
        Scanner input= new Scanner(System.in);
        System.out.print("输入几个数字:");
        int nub=input.nextInt();
        int[] a=new int[nub];
        for (int i=0;i<nub;i++)
        {
            System.out.print("输入第"+(i+1)+"个");
            a [i]= input.nextInt();
        }

        Arrays.sort(a);   //使用sort函数使其从小到大排序
        System.out.print("从小到大排序为:");
        for (int i=0;i<nub;i++)
        {
            System.out.print(a[i]+"、");
        }
    }
 public static void main(String[] args) {
        Scanner input =new Scanner(System.in);
        System.out.println("请输入几个数:");
        int Num=input.nextInt();
        int []a=new int[Num];
        for(int i=1;i<=Num;i++){
            System.out.print("输入的第"+i+"个数是:");
            a[i]=input.nextInt();
        }
        for(int i=1;i<=Num;i++)
        {
            for(int j=2;j<=Num;j++) {
                int c;
                if (a[i] < a[i + 1]) {
                    continue;
                } else {
                    c = a[i];
                    a[i] = a[j];
                    a[j] = c;
                }
            }
            System.out.print(a[i]+" ");
        }
    }

 

 分析:对于一系列的数的排序,可以选择函数法sort来自动排序(图一),也可以用常见的冒泡法来排序(图二)

3.8 打印出杨辉三角形

public static void main(String args[])
    {        int x=10;        int num[][] = new int[x][x];
        for(int m=0;m<x;m++) {
            for (int n = 0; n <= m; n++) {
                if (n == 0 || m == n) {
                    num[m][n] = 1;
                } else
                    num[m][n] = num[m - 1][n - 1] + num[m - 1][n];
            }
        }
        for(int i=0;i<x;i++) {
            for (int l = i; l < x; l++) {
                System.out.print(" ");
            }
            for (int j = x - i; j <= x; j++) {
                System.out.print(num[i][x - j] + " ");
            }
            System.out.println();
        }

    }

 分析:每一行的第一个数和每一行的最后一个数都是1;从第三行起,每一行的第二个数字往后都等于上面两个数的和,通过这个关系,把式子列出来,再把数字输出来,最后再来一个循环把数字排列好。

3.9判断2-100之间有多少个素数,并输出所有素数

public static void main(String[] args) {
        int s=0;
        for(int i=2;i<=100;i++)
        {
            for(int j=2;j<=i;j++)
            {
                if(i%j==0&&i!=j)
                {
                    break;
                }
                if(i==j) {
                    System.out.println(i);
                    s++;
                }
            }
        }
        System.out.println(s);
    }

常见的差不多可以分为这些,主要是分析出题中的重点关系,把语句梳理通;或者先写一些简单可以运行出来的,在一步步加进去。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yy64ll826

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值