数组的定义、最值、二维数组定义、遍历、累加、小组销售额,总金额等

1、数组的定义:

(1)数据类型【】数组名=new 数据类型【元素个数或数据长度】

  int     [ ]      a     =new   int           [100]

数组:

在内存中定义了100个int类型的变量,第一个变量的名称为x[0],第二个变量的名称为x[1],以此类推,第100个变量的名称为x[99],这些变量的初始值都是0。(数组中的下标是从0开始)

数组在创建过程中内存的分配情况:

 1public class ArrayDemo01 {
 2    public static void main(String[] args) {
 3        int[] arr = new int[4]; // 创建数组对象
 5        System.out.println("arr[0]=" + arr[0]); // 访问数组中的第一个元素
 6        System.out.println("arr[1]=" + arr[1]); // 访问数组中的第二个元素
 7        System.out.println("arr[2]=" + arr[2]); // 访问数组中的第三个元素
 8        System.out.println("数组的长度是:" + arr.length); // 打印数组长度
 9    }
 10}

 


 

 

数组中元素会被自动赋予一个默认值,根据元素类型的不同,默认初始化的值也是不一样的。具体如下表所示。

数据类型

默认初始化值

byte、short、int、long

0

float、double

0.0

char

一个空字符(空格),即’\u0000’

boolean

false

引用数据类型

null,表示变量不引用任何对象

 

 例如:

 1public class ArrayDemo02 {
 2    public static void main(String[] args) {
 3        int[] arr = new int[4]; // 定义可以存储4个整数的数组
 4        arr[0] = 1; // 为第1个元素赋值1
 5        arr[1] = 2; // 为第2个元素赋值2
 6        // 下面的代码是打印数组中每个元素的值
 7        System.out.println("arr[0]=" + arr[0]);
 8        System.out.println("arr[1]=" + arr[1]);
 9        System.out.println("arr[2]=" + arr[2]);
 10        System.out.println("arr[3]=" + arr[3]);
 11    }
 12}

 

(2)在初始化数组时还有一种方式叫做静态初始化,就是在定义数组的同时就为数组的每个元素赋值。数组的静态初始化有两种方式,具体格式如下:

1、类型[] 数组名 = new 类型[]{元素,元素,……};

int[  ] aa=new int[  ]{  1,2,3,4};

2、类型[] 数组名 = {元素,元素,元素,……};    

int [  ] aa={1,2,34,};

 2、数组遍历、数组最值

 (1)依次访问数组中的每个元素,这种操作称作数组的遍历。

public class Demo04 {
    public static void main(String[] args) {
        int[] arr = { 1, 2, 3, 4, 5 }; // 定义数组
        // 使用for循环遍历数组的元素
        for (int i = 0; i < arr.length; i++) {
            System.out.println(arr[i]); // 通过索引访问元素
        }
    }
}

 

运行后:

打印所有人员(数组遍历)

import java.util.Random;
class Demo1111 
{
    public static void main(String[] args) 
    {
        
        String[] arr={"马荣","杨杨","车冠军","刘钊","孙崇武","李永春"};
        for(int i=0;i<arr.length;i++){
            System.out.println(arr[i]);
        }
        Random sc=new Random();
        int a=sc.nextInt(6);
        System.out.println(arr[0]+"来回答以下这个问题");
    }
}

 

 

 (2)数组最值:数组中的最大、最小值

 

package com.oracle.day01;

public class Demo05 {
    public static void main(String[] args){
            int[] arr = { 4, 1, 6, 3, 9, 8 }; // 定义一个数组
            int max = arr[0]; // 定义变量max用于记住最大数,首先假设第一个元素为最大值
            int min = arr[0];//定义变量max用于记住最大数,首先假设第一个元素为最大值
            // 下面通过一个for循环遍历数组中的元素
            for (int x = 1; x < arr.length; x++) { 
                if (arr[x] > max) { // 比较 arr[x]的值是否大于max 
                    max = arr[x]; 
                    }// 条件成立,将arr[x]的值赋给max 
                if(arr[x]<min){// 比较 arr[x]的值是否小于于min
                        min=arr[x];//条件成立,将arr[x]的值赋给min 
                    }
                }
             System.out.println("max=" + max); // 打印最大值 
             System.out.println("min=" + min);//打印最小值
        }
}

 

 

 

 

3、 数组越界异常、 空指针异常

 

每个数组的索引都有一个范围,即0~length-1。在访问数组的元素时,索引不能超出这个范围,否则程序会报错,如下所示。

 1public class ArrayDemo06 {
 2    public static void main(String[] args) {
 3        int[] arr = new int[4]; // 定义一个长度为4的数组
 4        System.out.println("arr[0]=" + arr[4]); // 通过角标4访问数组元素
 5    }
 6}

 

 

运行结果如下图所示:

在使用变量引用一个数组时,变量必须指向一个有效的数组对象,如果该变量的值为null,则意味着没有指向任何数组,

此时通过该变量访问数组的元素会出现空指针异常,接下来通过一个案例来演示这种异常,如下所示:

 

 1public class ArrayDemo07 {
 2    public static void main(String[] args) {
 3        int[] arr = new int[3]; // 定义一个长度为3的数组
 4        arr[0] = 5; // 为数组的第一个元素赋值
 5        System.out.println("arr[0]=" + arr[0]); // 访问数组的元素
 6        arr = null; // 将变量arr置为null
 7        System.out.println("arr[0]=" + arr[0]); // 访问数组的元素
 8    }
 9}

 

 

数组应用:

------------------------------------------随机点名器即在全班同学中随机的打印出一名同学名字

 

                      要做的随机点名器,它具备以下3个内容:

 

                       存储所有同学姓名

 

                       总览全班同学姓名

 

                       随机点名其中一人,打印到控制台

import java.util.Random;
class Demo1111 
{
    public static void main(String[] args) 
    {
        
        String[] arr={"马荣","杨杨","车冠军","刘钊","孙崇武","李永春"};
        for(int i=0;i<arr.length;i++){
            System.out.println(arr[i]);
        }
        Random sc=new Random();
        int a=sc.nextInt(6);
        System.out.println(arr[0]+"来回答以下这个问题");
    }
}

 

 

 

4、二维数组

 (1)二维数组的定义方式

-------------------int【】【】arr = new int [3][4];

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

------------------int [ ] [ ] arr={{1,2},{3,4,5},{6,78,8,99}}

 

获取数组中元素值::

class ArrayDemo08 {
    public static void main(String[] args){
    
        //定义二维数组的方式
        int[][] arr = new int[3][4];
    
        System.out.println( arr );------------------一个地址
        System.out.println("二维数组的长度: " + arr.length);--------------二维数组的长度
        //获取二维数组的3个元素
        System.out.println( arr[0] );
        System.out.println( arr[1] );
        System.out.println( arr[2] );
        
        System.out.println("打印第一个一维数组的元素值");----------因为在堆中所以赋值为0
        System.out.println( arr[0][0] );
        System.out.println( arr[0][1] );//访问的为二维数组中第1个一维数组的第2个元素
        System.out.println( arr[0][2] );
        System.out.println( arr[0][3] );
        
        System.out.println("打印第二个一维数组的元素值");
        System.out.println( arr[1][0] );
        System.out.println( arr[1][1] );
        System.out.println( arr[1][2] );
        System.out.println( arr[1][3] );
        
        System.out.println("打印第三个一维数组的元素值");
        System.out.println( arr[2][0] );
        System.out.println( arr[2][1] );
        System.out.println( arr[2][2] );
        System.out.println( arr[2][3] );
    }
}

 

 

(2)二维数组元素遍历与数组元素累加和

 

class ArrayDemo09 {
    public static void main(String[] args){
        //一维数组的求累加和并遍历
        int[] arr = {10,20,30,40,50};
        int sum = 0; 
        for (int i=0; i<arr.length; i++) {
              //System.out.println(arr[i]);
            sum += arr[i];
        }
        System.out.println("sum= " + sum);
        System.out.println("---------------------");
        
//二维数组的求累加和并遍历
        int[][] arr2 = { {1,2},{3,4,5},{6,7,8,9,10} };
        int sum2 = 0;
        for (int i=0; i<arr2.length; i++) {
            for (int j=0; j<arr2[i].length; j++) {
                 //System.out.println(arr2[i][j])
                sum2 += arr2[i][j];
            }
        }
        System.out.println("sum2= "+ sum2);
    }
}

 

 举例:

class kucun 
{
    public static void main(String[] args) 
    {
        String model="MacBookAir";
        double size=13.3;
        double price=6988.88;
        int kucun=5;

        String model1="thinkpad";
        double size1=14.0;
        double price1=5999.99;
        int kucun1=10;

        String model2="asus";
        double size2=15.6;
        double price2=4999.5;
        int kucun2=5;
        
        int sum=kucun+kucun1+kucun2;
        double sumprice=price+price1+price2;

        System.out.println("品牌型号"+'\t'+"尺寸"+'\t'+"价格"+'\t'+"库存");
        System.out.println(model+'\t'+size+'\t'+price+'\t'+kucun);    
        System.out.println(model1+'\t'+size1+'\t'+price1+'\t'+kucun1);
        System.out.println(model2+'\t'+'\t'+size2+'\t'+price2+'\t'+kucun2);
        System.out.println("总库存数"+':'+sum);
        System.out.println("库存商品总金额"+':'+sumprice);
    }
}

数组及方法的几个使用小例子:

 (1)随机点名和显示班里所有人(使用的是数组和方法)

import java.util.Random;
class demo03
{
    public static void main(String[] args) 
    {    String[] arr=getcun();
        getname();
        getming();
    }
    public static String[] getcun(){
        String[] arr={"马荣","杨杨","车冠军","刘钊","孙崇武","李永春"};
        return arr;
    }
    public static void getname(){
        String[] arr={"马荣","杨杨","车冠军","刘钊","孙崇武","李永春"};
        for(int i=0;i<arr.length;i++){
        System.out.print(arr[i]+"、");
        }
        System.out.println();
    }
    public static void getming(){
        String[] arr={"马荣","杨杨","车冠军","刘钊","孙崇武","李永春"};
        Random sc=new Random();
        int a=sc.nextInt(arr.length);
        System.out.println(arr[a]+"同学起立");
    }
}

(2)

class xiaoshou 
{
    public static void main(String[] args) 
    {
        int[][] arr={{11,12},{21,22,23},{31,32,33,34}};
        int sum=0;
        for(int i=0;i<arr.length;i++){
            int groupsum=0;
            for(int j=0;j<arr[i].length;j++){
            groupsum=groupsum+arr[i][j];
            }
            sum=groupsum+sum;
            System.out.println("第"+(i+1)+"小组销售额"+groupsum+"万元");
        }
         System.out.println("总销售额为: " + sum + " 万元");
    }
}

(3)

import java.util.Scanner;
class  store
{
    public static void main(String[] args) 
    {
        String[] names={"aaa","bbb","ccc"};
        double[] sizes={13.3,14.0,15.6};
        double[] prices={6988.8,6999.0,4999.5};
        int[] counts={5,10,18};
        Scanner sc=new Scanner(System.in);
        while(true){
            show();
            int choose=sc.nextInt();
            switch(choose){
            case 1:showgoods(names,sizes,prices,counts);
                break;
            case 2:updatecounts(names,sizes,prices,counts);
                break;
            case 3:
                return;
            default:
                System.out.println("您的输入有误,请重新输入");
            }
        }
    }
    public static void show(){
        System.out.println("--------------库存管理-------------");
        System.out.println("1、查看库存清单");
        System.out.println("2、修改商品库存数量");
        System.out.println("3、退出");
        System.out.println("请输入要执行的操作序号:");
    }
    public static void showgoods(String[] names,double[] sizes,double[] prices,int[] counts){
        System.out.println("--------------库存管理-------------");
        System.out.println("品牌型号 尺寸  价格   库存");
            for(int i=0;i<names.length;i++){
                System.out.println(names[i]+"\t"+sizes[i]+"\t"+prices[i]+"\t"+counts[i]);
            }
    }
    public static void updatecounts(String[] names,double[] sizes,double[] prices,int[] counts){
        showgoods(names,sizes,prices,counts);
        System.out.println("请输入您要修改的商品序号:");
        Scanner sc=new Scanner(System.in);
        int number=sc.nextInt();
        System.out.println("请输入修改后的数量:");
        int count=sc.nextInt();
        counts[number-1]=count;
    }
}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

posted @ 2018-09-17 16:41  yangyang1182  阅读(469)  评论(0编辑  收藏  举报