学习笔记—java数组与练习

来源:互联网 发布:js空格用什么表示 编辑:程序博客网 时间:2024/04/28 06:55


概念 数组就是同一种类型那个数据的集合,是一个容器,是引用类型,存储在堆中。
好处:可以自动给数组中的元素从0开始编号,方便操作这些元素
格式: 1. int[] arr=new int[5]; 创建一个长度为5 的,变量名为arr,类型为整型的数组。
      2. int[] arr=new []{5,6,8,3,4}
         int[] arr={5,6,8,3,4}

数组中常见问题:
1、数组角标越界 //ArrayIndexOutofBoundsException
2、空指针异常  //NUllPointerException 当引用没有任何指向,值为空的情况,该引用还在用于操作实体。

数组的操作:
1.获取数组中的数据,通常会用到遍历(for循环),arr.length代表数组的长度
代码:
  int[] arr=new int[5];
  for(int x=0;x<arr.length;x++)
  {
        arr[x];
  }

2.打印数组中的元素,元素间用逗号隔开。

   int[] arr=new int[5];
  for(int x=0;x<arr.length;x++)
  {
         if(x!=arr.length-1)
          System.out.print( arr[x]+",");
         else
           System.out.print( arr[x]);

  }

3.获取最值
      //定义一个方法,返回最大值角标
           public static int  getmax(int[] arr){

                      int max=0; //定义一个变量初始化数组的0角标值
for(int x=0; x<arr.length;x++){//循环遍历数组
if(arr[max]<arr[x]){//如果临时元素小于遍历到的元素
max=x;//将遍历到的值的角标付给临时变量角标
}
}
return max; //返回最大值角标
}

二维数组:数组中的数组
int[][] arr=new int [3][4];//定义了一个名称为arr的二维数组,这个二维数组中有3个一位数组,每一个一位数组中有四个元素,
                           //3代表的是二维数组的长度,4代表的是二维数组中每一个一位数组的长度。

int[][] arr =new int[3][];//

int[][] arr={{5,8,6,5},{4,5,2},{8,8,9}}

表示方式

int[][] x; int x[][]; int[] x[];
arr.length:二维数组的长度
arr[0].length:二维数组中第一个一位数组的长度

二维数组的遍历

for(int x=0;x<arr.length;x++){
   
     for(int y=0;y<arr[x].length;y++)
     {
        sum=sum+arr[x][y];
      }

}

int[] x,y[]; x是一维数组,y是二维数组。相当于 int x[]    int y[][];

a)x[0]=y  //错误
b)y[0]=x  //正确 两边都是一维数组
c)y[0][0]=x; //错误
d)x[0][0]=y;//错误

杨辉三角

class Yanghui  {  public static void main(String[] args)    {   shu();  }  public static void shu(){  int [][]arr=new int[10][10];  for (int i=0;i<10 ;i++ )  {   arr[i][i]=1;   arr[i][0]=1;  }  for (int i=2;i<10 ;i++ )  {   for (int j=1;j<i ;j++ )   {    arr[i][j]=arr[i-1][j]+arr[i-1][j-1];   }  }  for (int i=0;i<10 ; i++)  {   for (int j=0;j<=i ;j++ )   {    System.out.print(arr[i][j]);   }   System.out.println();  }    }   }

2.某个公司采用公用电话传递数据信息,数据是小于8位的整数,为了确保安全,在传递过程中需要加密,加密规则如下:
    首先将数据倒序,然后将每位数字都加上5,再用和除以10的余数代替该数字。
    最后将第一位和最后一位数字交换。 请任意给定一个小于8位的整数,然后,把加密后的结果在控制台打印出来。

class Jiami {  public static void main(String[] args)    {   en(23691);  }    public static void en(int number){   int arr[]=new int[7];   int index=0;   while(number>0){        arr[index]=number%10;    number=number/10;        index++;      }   for (int i=0;i<index;i++ )   {    arr[i]=(arr[i]+5)%10;   }   int temp=0;   temp=arr[0];   arr[0]=arr[index-1];   arr[index-1]=temp;   for (int i=0; i<index; i++)   {    System.out.print(arr[i]+" ");   }

二维数组

/*二维数组遍历,求和,求最大值{{3,8,2},{2,7},{9,0,1,6}}*/class Test4 {public static void main(String[] args) {//一维数组遍历//循环变量是可以赋值可以变化的//数组索引是可以使用变量代替的int[][] arr = {{3,8,2},{2,7},{9,0,1,6}};//定义变量,记录和。int sum = 0;//定义变量,记录最大值。int max = arr[0][0];for (int i=0; i<arr.length; i++){//第一次arr[0]>>{3,8,2}//第二次arr[1]>>{2,7}//第三次arr[2]>>{9,0,1,6}//第N次arr[i]int sum = 0;for (int j=0; j<arr[i].length; j++){//打印每一个数System.out.print(arr[i][j]+" ");//累加每一个数sum += arr[i][j];//将max与每一个元素进行比较。如果该元素大于max则赋值给max,最后max的值将为最大值if(max<arr[i][j]) {max = arr[i][j];}}System.out.println();}System.out.println("二维数组中所有元素的和为"+sum);System.out.println("二维数组中最大的数为"+max);}}

























0 0
原创粉丝点击