zoukankan      html  css  js  c++  java
  • 循环嵌套

    循环嵌套是指一个循环在另一个循环之内;

    ①内层循环结构遍历一遍,只相当于外层循环循环体执行了一次

    ②假设外层循环需要执行M次,内层循环需要执行N次,此时,内层循环体一共执行了M*N次

    技巧:外层循环变量控制行数,内层变量控制列数

    public class Nested {
    public static void main(String[] args) {
     int i,j;
     for(i=0;i<10;i++) {
      for(j=i;j<10;j++)//第一次将j=i输入成了j=1,运行出来等长的点
       System.out.print(".");//将println输成print,则换行了
      System.out.println(" ");
     }
    }


    }

    正确运行结果:

    当将代码第五行改成j=1时,运行结果为

    print与println区别:

    print 不会换行,println会换行;

    心得:虽然是很简单的代码,但一不小心就很容易出错,必须弄懂每一步,加以深化;

    加更练习:通过循环嵌套实现九九乘法表;

     1 public class NineNine {
     2 
     3     public static void main(String args[]){
     4         for(int i=1;i<=9;i++) {
     5             for(int j=1;j<=i;j++) {
     6                 System.out.print(i+"*"+j+"="+i*j+" ");
     7             }
     8             System.out.println();
     9         }
    10     
    11     
    12     
    13     }
    14     }

    运行结果:

    100以内所有的质数输出

     1 //质数,只有被1和它本身整除的自然数------即从2开始到这个数-1都不能被这个数本身整除
     2 public class PrimeNumber {
     3     public static void main(String args[]) {
     4         for(int i=2;i<=100;i++) {//遍历100以内的自然数
     5             boolean isFlag=true;
     6             for(int j=2;j<i;j++) {//j:被i去除
     7                 if(i%j==0) {
     8                     isFlag=false;
     9                 }
    10                 
    11             }
    12             if(isFlag==true) {
    13                 System.out.println(i);
    14         }
    15         }
    16         
    17     }
    18 
    19 }

    运行结果:

    优化一:加上break;为使优化明显表示出来,引用了currentTimeMillis()方法,并将100以内改为100000以内。

     1 public class PrimeNumber {
     2     public static void main(String args[]) {
     3         long start = System.currentTimeMillis();//获取当前时间距离1970-01-01 00:00:00的毫秒数
     4         for(int i=2;i<=100000;i++) {//遍历100000以内的自然数
     5             boolean isFlag=true;
     6         
     7             for(int j=2;j<i;j++) {//j:被i去除
     8                 
     9                 if(i%j==0) {
    10                     isFlag=false;
    11                     break;//优化一:一旦被除尽,就不会再往下除,只对本身非质数的自然数是有效的
    12                 }
    13             }
    14             if(isFlag==true) {
    15                 System.out.println(i);
    16         }
    17         }
    18         long end=    System.currentTimeMillis();
    19         System.out.println("所花费的时间为:"+(end-start));
    20     }
    21 
    22 }

     如下图所示,加break优化花费时间为2204ms.不加则花费22014ms;

    优化二:

     1 public class PrimeNumber {
     2     public static void main(String args[]) {
     3         long start = System.currentTimeMillis();//获取当前时间距离1970-01-01 00:00:00的毫秒数
     4         for(int i=2;i<=100;i++) {//遍历100以内的自然数
     5             boolean isFlag=true;
     6         
     7             for(int j=2;j<=Math.sqrt(i);j++) {//j:被i去除       优化二
     8                 
     9                 if(i%j==0) {
    10                     isFlag=false;
    11                     //break;//优化一:一旦被除尽,就不会再往下除,只对本身非质数的自然数是有效的
    12                 }
    13             }
    14             if(isFlag==true) {
    15                 System.out.println(i);
    16         }
    17         }
    18         long end=    System.currentTimeMillis();
    19         System.out.println("所花费的时间为:"+(end-start));
    20     }
    21 
    22 }
  • 相关阅读:
    ASP实现禁止从外部提交数据
    随机提取N条记录[多种数据库方法]
    创建一个带滚动条的div
    将IP最后一位替换为星号
    用PHP5写的smtp类,支持身份验证、附件、抄送、暗送
    1004
    1021
    ProcessMonitor
    悲观锁和事务处理并发冲突
    spring.net入门
  • 原文地址:https://www.cnblogs.com/boogie-xy/p/10645024.html
Copyright © 2011-2022 走看看