当前位置:   article > 正文

4.Java循环语句和数组_javafor循环数组

javafor循环数组

一、循环结构---重复运行

1.for循环

 结构:for(初始条件;判断条件;循环增量/减量){

                           java代码

                       }

              初始条件--决定循环的开始

              判断条件--决定循环的结束

              循环增量/减量--控制初始条件值

              执行过程:

              先执行初始条件,再执行判断条件,

              判断条件的结果为true,执行{java代码},接下来执行循环增量/减量,接着执行判断条件

              判断条件的结果为false,循环结束。

            1. 循环输出1-10的整数

  1. public class ForDemo{
  2. public static void main(String args[]){
  3. // 循环输出1-10的整数
  4. for(int i=1;i<=10;i++){
  5. System.out.println("i="+i);
  6. }
  7. }
  8. }

         2.循环输出20-1的整数

  1. public class ForDemo{
  2.            public static void main(String args[]){
  3.            //循环输出20-1的整数
  4.            for(int j=20;j>=1;j--){
  5.                      System.out.println("j="+j);
  6.                      }
  7.            }
  8. }

       3.计算1-15的整数和

  1. public class ForDemo{
  2.            public static void main(String args[]){
  3.            //计算1-15的整数和
  4.                 int sum=0;
  5.            for( int k=1;k<=15;k++){
  6.                       sum=sum+k;
  7.                 }
  8.                     System.out.println("sum="+sum);
  9.            }
  10. }

2.while循环

结构:while(判断条件){

                     java代码;

              }

              执行过程:

                  先执行判断条件,判断条件结果为true时,执行{java代码},再执行增量/减量条件,继续执行判断条件,判断条件结果为false时,结束循环

              注意1:初始条件定义在while循环的格式之外

              注意2:把循环增量/减量的条件写在java代码.....最后一句

            1.循环输出1-10的整数

  1. public class WhileDemo{
  2.            public static void main(String args[]){     
  3.            //循环输出1-10的整数
  4.            int i=1;
  5.            while(i<=10){
  6.            System.out.println("i="+i);
  7.            i++;
  8.          }
  9.      }
  10. }

         2.循环输出20-1的整数

  1. public class WhileDemo{
  2.            public static void main(String args[]){   
  3.            //循环输出20-1的整数
  4.            int j=20;
  5.            while(j>=1){
  6.            System.out.println("j="+j);
  7.             j--;
  8.           }
  9.      }
  10. }

        3.计算1-15的整数和

  1. public class WhileDemo{
  2.            public static void main(String args[]){  
  3.            //循环输出1-10的整数和
  4.            int k=1;
  5.            int sum=0;
  6.            while(k<=10){
  7.                  sum=sum+k;
  8.                  k++;
  9.             }
  10.            System.out.println( "sum="+sum);
  11.       }
  12. }

3.Do……Whlie循环

结构:

do{

               java代码;

         }while(判断条件);

执行过程:

              先执行{java代码},再执行判断条件,

              判断条件的结果为true,继续执行{java代码},接着执行判断条件

              判断条件的结果为false,结束循环

              注意1:初始条件定义在do...while循环的格式之外。

              注意2:把循环增量/减量的条件写在{java代码.....最后一句}

        1.循环输出1-10的整数

  1. public class DoWhileDemo{
  2.            public static void main(String args[])
  3. int i=1;
  4.            do{
  5.            System.out.println("i="+i);
  6.            i++;             
  7.              }while(i<=10);
  8.       }
  9. }

        2.循环输出20-1的整数

  1. public class DoWhileDemo{
  2.            public static void main(String args[])
  3. int j=20;
  4.            do{
  5.            System.out.println("j="+j); 
  6.             j--;
  7.             }while(j>=1);   
  8.       }
  9. }

         3.计算1-15的整数和

  1. public class DoWhileDemo{
  2.        public static void main(String args[]){
  3.            int k=1;
  4.            int sum=0;
  5.            do{
  6.            sum=sum+k;
  7.             k++;
  8.             }while(k<=15);
  9.            System.out.println("sum="+sum);
  10.       }
  11. }

     4.三者区别

        For循环有定义循环增量/减量的具体位置;While循环和Do…while循环没有定义循环增量/减量的具体位置,往往都是自己定义在循环体中的最后一句。for循环需要明确循环次数while和do……while循环不需要考虑循环次数

        while循环与do……while循环的区别,while循环先判断后执行,do……while循环先执行后判断,初始判断条件的结果为false的时候,do……while循环会比while多执行一次循环体。

例1:无限循环,可以任意终止

  1. import java.util.Scanner;
  2. public  class  Test1{
  3.        public  static  void  main(String  args[]){
  4.               //创建输入对象
  5.               Scanner  input=new Scanner(System.in);
  6.               boolean  flag=true; //控制循环持续执行
  7.               while(flag){
  8.               //得到第一个运算数字
  9.               System.out.println("请输入第一个运算数字:");
  10.               int  num1=input.nextInt();
  11.               //得到一个运算符号
  12.               System.out.println("请输入一个运算符号:");
  13.               String  op=input.next();
  14.               //得到第二个运算数字
  15.               System.out.println("请输入第二个运算数字:");
  16.               int  num2=input.nextInt();
  17.               //计算结果
  18.               switch(op){
  19.                case "+":System.out.println(num1+"+"+num2+"="+(num1+num2));break;
  20.                case "-":System.out.println(num1+"-"+num2+"="+(num1-num2));break;
  21.              case "*":System.out.println(num1+"*"+num2+"="+(num1*num2));break;
  22.                case "/":System.out.println(num1+"/"+num2+"="+(num1/num2));break;
  23.                case "@":flag=false;break;
  24.                default:System.out.println("输入有误无法计算");break;
  25.               }
  26.          }
  27.      }
  28. }

输出演示:

  1. 请输入第一个运算数字:
  2. 1
  3. 请输入一个运算符号:
  4. -
  5. 请输入第二个运算数字:
  6. 4
  7. 1-4=-3
  8. 请输入第一个运算数字:
  9. 3
  10. 请输入一个运算符号:
  11. +
  12. 请输入第二个运算数字:
  13. 3
  14. 3+3=6
  15. 请输入第一个运算数字:
  16. 6
  17. 请输入一个运算符号:
  18. *
  19. 请输入第二个运算数字:
  20. 9
  21. 6*9=54
  22. 请输入第一个运算数字:
  23. 1
  24. 请输入一个运算符号:
  25. @
  26. 请输入第二个运算数字:
  27. 3

    5.break语句

break语句---循环中就表示中断循环的执行。

如果循环是嵌套的,那么break语句出现在那一层就中断那一次的循环。

例:

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

     6.continue语句

continue语句--往往出现在循环中表示结束当前循环,继续下一次循环执行。

例:

  1. public  class  ContinueDemo{
  2.        public  static  void  main(String  args[]){
  3.               //continue语句--往往出现在循环中表示结束当前循环,继续下一次循环执行
  4.               for(int i=1;i<=10;i++){
  5.                      if(i==5){
  6.                             continue;
  7.                      }
  8.                      System.out.println("i=="+i);
  9.               }
  10.        }
  11. }

二、数组

      1.什么是数组?

为了能够一次性保存一组数据,所以才有了数组。相同数据类型的数据按照顺序组成的复合数据类型就是数组。

      2.如何定义一个一维数组?

格式:两种都可

数据类型  数组名称[ ]

数据类型  [ ]数组名称

数组的定义与变量的定义相似,只是需要”[ ]”与变量区分,因此上”[ ]”就是数组的标志。名称的前面/后面出现一个“[ ]”就是一维数组,有两个”[ ][ ]”就是二维数组,两个以上就是多维数组。

      3.创建一个一维数组

①先定义,后创建, 指定的存储空间的数据值是int型

定义:数据类型  数组名称[ ] /   数据类型  [ ]数组名称

创建:数组名称=new 数据类型[指定存储空间]

②定义+创建同时

      数据类型 数组名称[ ]=new 数据类型[指定存储空间]

      数据类型 [ ]数组名称=new 数据类型[指定存储空间]  

    4.如何为一维数组赋值?

①逐个赋值---挨个为数组的每一个存储空间存放数据值。【需要数组的下标

格式:数组名称[下标]=数据值;

注意:当保存在数组中的数据超过数组指定的存储空间就是会出错。

    下标从0开始

例:

  1. import java.util.Arrays;
  2. public  class  ArrayDemo{
  3.             public  static  void  main(String  args[]){
  4.              //定义+创建数组
  5.              int intarray1[]=new int[4];
  6.              char chararray1[]=new char[5];
  7.             //逐个赋值
  8.              intarray1[0]=123;
  9.              intarray1[1]=456;
  10.              intarray1[2]=276;
  11.              intarray1[3]=672;
  12.             //注意:当保存在数组中的数据超过数组指定的存储空间就是会出错。
  13.             //java.lang.ArrayIndexOutOfBoundsException: 4
  14.             // intarray1[4]=832;
  15.        }
  16. }

②直接赋值---在创建数组的时候将数据值保存到数组中

格式1:数据类型 数组名称[ ]=new 数据类型[ ]{数据值1,数据值1,数据值3…数据值n}

      创建数组的时候不能指定存储空间

例:int intarray2[ ]=new int[ ]{23,34,45,56};

char chararray2[ ]=new char[ ]{'h','e','l','l','o'};

格式2:数据类型  数组名称[]={数据值1,数据值2,...,数据值n};

    5.如何从一维数组中取值

取值格式:数组名称[下标]

System.out.println(intarray2[3]); //56

System.out.println(chararray2[4]); //o

例:

  1. import java.util.Arrays;
  2. public  class  ArrayDemo{
  3.             public  static  void  main(String  args[]){
  4.              //定义+创建数组
  5.              int intarray1[]=new int[4];
  6.              char chararray1[]=new char[5];
  7.             //逐个赋值
  8.              intarray1[0]=123;
  9.              intarray1[1]=456;
  10.              intarray1[2]=276;
  11.              intarray1[3]=672;
  12.             //注意:当保存在数组中的数据超过数组指定的存储空间就是会出错。
  13.             //java.lang.ArrayIndexOutOfBoundsException: 4
  14.             // intarray1[4]=832;
  15.             //直接赋值
  16.             int intarray2[]=new int[]{23,34,45,56};
  17.             char chararray2[]=new char[]{'h','e','l','l','o'};
  18.             //数组取值格式:数组名称[下标]
  19.            System.out.println(intarray2[3]); //56
  20.            System.out.println(chararray2[4]); //o
  21.        }
  22. }

      6.一维数组的length属性

如果数组通过直接赋值的方式创建,那么length属性就表示元素个数。

如果数组通过定义创建的方式创建,那么length属性就表示创建数组是给出的空间大小,与数组的元素个数无关

例:        

  1.            //如果数组通过直接赋值的方式创建,那么length属性就表示元素个数
  2.           System.out.println(intarray2.length);//4
  3.           //如果数组通过定义创建的方式创建,那么length属性就表示创建数组是给出的空间大小
  4. //比如我创建数组空间大小4,但我只赋值了一个
  5.            double douarray[]=new double[5];
  6.            douarray[0]=5.2;
  7.            System.out.println(douarray.length);//5

      7.循环遍历一维数组

比如:

  1. import java.util.Arrays;
  2. public  class  ArrayDemo{
  3. public  static  void  main(String  args[]){
  4.  //循环遍历一维数组
  5. String names[]={"张三","李四","王五"};
  6.  //for循环
  7.  for(int i=0;i<names.length;i++){
  8.   System.out.println("for--"+names[i]);
  9.        }
  10. //while循环遍历数组
  11.               int j=0;
  12.               while(j<names.length){
  13.               System.out.println("while--"+names[j]);
  14.               j++;
  15.               }
  16.               //do...while循环遍历数组
  17.               int k=0;
  18.               do{
  19.               System.out.println("do...while--"+names[k]);
  20.            k++;
  21.                    }while(k<names.length);
  22. //增强的for循环--jdk1.5新增的内容
  23.           //for(数据类型 变量名称:数组){  变量名称==数组中的每一个数据值}
  24. for(String name:names){
  25.                      System.out.println("增强的for循环--"+name);
  26.               }
  27.     }
  28. }

      8.定义一个二维数组

格式:数据类型  数组名称[][];       int arrtest1[][];

          数据类型  [][]数组名称;       int [][]arrtest2;

二维数组可以保存一个类似表格一样的数据,所以我们可以认为二维数组就是一个表格。

      9.创建二维数组

①先定义后创建,

                    int arrtest1[][];

                arrtest1=new int[2][3];

或者定义+创建,同一维处理方法

数据类型  数组名称[][] = new 数据类型[表格行][行中的列];

数据类型  [][]数组名称 = new 数据类型[表格行][行中的列];

②赋值

逐个赋值:

              arrtest1[0][0]=100;

              arrtest1[0][1]=200;

              arrtest1[0][2]=300;

              arrtest1[1][0]=400;

              arrtest1[1][1]=500;

              arrtest1[1][2]=600;

直接赋值:

格式:  

      ①数据类型 数组名称[][]=new 数据类型[][]{

              {数据值1,数据值2,数据值3…},

              {数据值1,数据值2,数据值3…}

          };

   如char charr2[][]=new char[][]{{'h','e','l','l','o'},{'w','o','r','l','d'}};

      ②数据类型 数组名称[][]={

            {数据值1,数据值2,数据值3…},

            {数据值1,数据值2,数据值3…}

     };

如char charr1[][]={{'h','e','l','l','o'},{'w','o','r','l','d'}};

      10.如何从二维数组中取值

只要我们能够得到数组的存储位置,就可以得到数组中的数据值。

格式:数组名称[行][列];

System.out.println(charr1[0][1]);//e

      11.二维数组的length属性---行数

System.out.println(charr1.length);//2

      12.循环遍历二维数组

使用双层循环结构,外层控制行,内层控制列

①for循环  

  1.     for(int m=0;m<charr1.length;m++){
  2.               for(int n=0;n<=4;n++){
  3.               System.out.println(charr1[m][n]);
  4.            }
  5. }

②增强for循环 

  1.   for(char hhh[]:charr1){
  2.          for(char value:hhh){
  3.          System.out.println("增强for循环---"+value);
  4.       }
  5. }

③while循环 

  1.  //while循环
  2.    int z=0;
  3.    while(z<2){
  4.           int k=0;
  5.           while(k<=4){
  6.                System.out.println("while循环---"+charr1[z][k]);
  7.                k++;
  8.              }
  9.         z++;
  10.      }

      13.认识Array类【数组的帮助类

Arrays类位于java.util包中,主要包含了操纵数组的各种方法;

       Arrays常用函数(都是静态的);

1.void Array.sort(Object[ ] array)

对数组按照升序排序;

2.void Array.sort(Object[ ] array, int from, int to)

       对数组元素指定范围进行排序(排序范围是从元素下标为from,到下标为to-1的元素进行排序)

3.Arrays.fill(Object[] array,Object object)

可以为数组元素填充相同的值

4.Arrays.fill(Object[] array,int from,int to,Object object)

对数组的部分元素填充一个值,从起始位置到结束位置,取头不取尾

5.Arrays.toString(Object[] array)

返回数组的字符串形式

例:

  1. import java.util.Arrays;
  2. public  class  ArrayDemo2{
  3.             public  static  void  main(String  args[]){
  4.          //排序前
  5.            System.out.println("排序前");
  6.            int array1[]={5,2,0,8,6,1,4};
  7.           //使用增强for循环输出
  8.           for(int num:array1){
  9.                     System.out.println(num);
  10.                }
  11.            System.out.println("按升序排序");
  12.            //void Array.sort(Object[] array)   对数组按照升序排序;
  13.            Arrays.sort(array1);
  14.            for(int num:array1){
  15.                     System.out.println(num);
  16.                }
  17.          //对指定元素范围进行排序
  18.          System.out.println("对指定2,0,8,6,进行排序");
  19.          int array2[]={5,2,0,8,6,1,4};
  20.          Arrays.sort(array2,1,5);
  21.            for(int num:array2){
  22.                     System.out.println(num);
  23.                }
  24.          //对数组填充相同的值
  25.          System.out.println("-------------");
  26.          char array3[]={'w','o','r','l','d'};
  27.          for(char charnum:array3){
  28.                    System.out.println(charnum);
  29.              }
  30.           System.out.println("对数组填充相同的值");
  31.          Arrays.fill(array3,'a');
  32.           for(char charnum:array3){
  33.                    System.out.println(charnum);     //aaaaa 
  34.                }
  35.           System.out.println("对数组部分位置填充一个值,从起始位置到结束位置,取头不取尾");
  36.           char array4[]={'w','o','r','l','d'};
  37.           Arrays.fill(array4,1,3,'a');
  38.           for(char charnum:array4){
  39.                    System.out.println(charnum);   //waald   
  40.                }
  41.          //返回数组的字符串形式
  42.          System.out.println("-----------");
  43.          String str1[]={"张三","李四","王五"};
  44.          for(String strnum:str1){
  45.                  System.out.println(strnum); 
  46.                 }
  47.           System.out.println("返回数组的字符串形式如下");
  48.           String newString=Arrays.toString(str1);
  49.            System.out.print(newString);  //[张三, 李四, 王五]      
  50.       }
  51. }

输出为:

  1. 排序前
  2. 5
  3. 2
  4. 0
  5. 8
  6. 6
  7. 1
  8. 4
  9. 按升序排序
  10. 0
  11. 1
  12. 2
  13. 4
  14. 5
  15. 6
  16. 8
  17. 对指定2,0,8,6,进行排序
  18. 5
  19. 0
  20. 2
  21. 6
  22. 8
  23. 1
  24. 4
  25. -------------
  26. w
  27. o
  28. r
  29. l
  30. d
  31. 对数组填充相同的值
  32. a
  33. a
  34. a
  35. a
  36. a
  37. 对数组部分位置填充一个值,从起始位置到结束位置,取头不取尾
  38. w
  39. a
  40. a
  41. l
  42. d
  43. -----------
  44. 张三
  45. 李四
  46. 王五
  47. 返回数组的字符串形式如下
  48. [张三, 李四, 王五]

      14.数组的内存结构

  

基本类型与复合数据类型的区别:

1.存在位置不同:基本类型存放是在栈中,复合数据类型存在栈和堆中;

2.在内存在存在的形式不同:基本类型在内存中是存放的真实值,复合类型在栈存放的是地址,堆中存放的是真实值。

练习题:

1.下列一维数组定义正确的是( BD)。

A.x=6;int num[x];    错,存储空间必须是int型,x没有定义

B.final int x=6;float a[x];    对的

C.final float x=6;int b[x];    存储空间必须是int型

D.final int x=6;int c[x];     对的

2.下列一维数组定义错误的是(B )。

A.char chararray3[]=new char[]{'a','b','c','d','e'};     对的

B.char []chararray3=new char[5]{'a','b','c','d','e'};    错,创建数组的时候不能指定存储空间

C.char chararray4[]={'h','e','l','l','o'};      对的

D.char []chararray4={'h','e','l','l','o'};      对的

3.以下数组定义中,正确的是(A )。

A. int a[2][]={1,2,3,4,5};      第三行是一维的

B. int a[][2]={{0},{}};       第三列是一维的

C. int a[2][2]={{1,2},{3}};  第三行第三列,应该是一个数

D. int a[][]={1,2,3,4};      二维数组,明显不对

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/233704?site
推荐阅读
相关标签
  

闽ICP备14008679号