JAVA--数组例题

一维数组相关知识:

声明数值数组变量,用于代表一个对象, 只是一个名字而已, 对象还没有创建,下面是声明数值数组变量的语法:

  1. 数据类型[] 数组名; // 中括号中不能有数字

示例:

  1.  声明一个用于存储int类型的数组变量 arr。   int [] arr;
  2.  声明一个用于存储long类型的数组变量 arr。  long [] arr;
  3.  声明一个用于存储double类型的数组变量 arr。    double [] arr;

创建一维数值数组

Java 语言使用 new 操作符来创建数组,语法如下:

  1. new 数据类型[数组长度];

后期要想使用该数组,需要把数组变量指向该数组。 示例:

  1. // 声明一个数组变量并指向一个用于存储10个int类型的数组
  2. int[] arr = new int[10];

一维数组初始化

数组初始化分为两种:动态初始化和静态初始化。

动态初始化:创建一个数组,指定数组长度,但不指定数组存储的具体值。根据数组存储数值类型的不同,会给数组自动赋不同的初始值,具体可分为以下两种:

  • 对于 byte,short、int 和 long 类型,数组中每个值被赋值成 0;

  • 对于 float,double 类型,数组中每个值被赋值成 0.0。

动态初始化示例:

public static void main(String[] args) {
// 创建一个用于存储10个int类型的数组
int[] ints = new int[10];
System.out.print(Arrays.toString(ints));
}

 

二维数组相关知识: 

声明二维数组变置并创建二维数组

Java 中声明二维数组变量的方式有以下两种:

  1. 数据类型[][] 变量名; // 方法一, 推荐使用
  2. 数据类型 变量名[][]; // 方法二, 不推荐使用

以下是声明示例:

  1. int[][] matrix1;   //声明方式一, 推荐使用
  2. int matrix2[][];   //声明方式二, 不推荐使用

在声明了二维数组变量后,我们可以创建二维数组对象,并将其引用赋值给二维数组变量。同一维数组类似,创建二维数组对象同样需要用到 new 操作符:

  1. matrix1 = new int[5][5];

二维数组中使用两个下标,一个表示行,另一个表示列。同一维数组一样,每个标索引值都是 int 型的,从 0 开始,如下图所示:

其实,二维数组可以理解为由一维数组所构成的数组。以上代码中,array 存储了 4 个长度相同的一维数组,下标从 0 到 3。这 4 个数组分别存储了 3 个 int 类型的数据元素,下标从 0 到 2。 #####获取二维数组的长度 二维数组实际上是一个数组,它的每个元素都是一个一维数组。数组 x 的长度是数组中元素的个数,可以用 x.length 获取该值。 对于二维数组 xx[0]x[1]x[2]、...、x[x.length-1]都是一维数组。 那么 x[x.length-1].length 则是 x 所引用二维数组中最后一个一维数组的长度。 x.length 即 x 引用的二维数组包含的一维数组数量。

1.二维数组之矩阵列求和 

编程要求:

根据提示,在右侧编辑器补充代码,输入矩阵进行列求和,第一行输入矩阵行列数,然后输入矩阵,输出每列的和。

测试输入:

  1.  4 4
  2.  1 2 3 4
  3.  5 6 7 8
  4.  9 10 11 12
  5.  13 14 15 16

预期输出:

  1.  28 32 36 40

 代码如下:

import java.util.Scanner;

public class ColumnSum {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        int rowNum = input.nextInt();  //行数
        int columNum = input.nextInt(); //列数
        int[] columnSum = new int[columNum];//列总和

        int[][] array;
        array=new int[rowNum][columNum];
        
        for(int i=0; i<rowNum; i++){
        for(int j=0; j<columNum; j++){
                array[i][j] =input.nextInt();
                 
        }
        }
        for(int j=0; j<columNum; j++){
        for(int i=0; i<rowNum; i++){
            columnSum[j]+=array[i][j];
        }
        }
        input.close();
        for(int i=0; i<columnSum.length; i++){
            System.out.print(String.format("%d ", columnSum[i]));
        }

    }
}

2.二维数组之商品收银

编程要求:

根据提示,在右侧编辑器补充代码,计算不同顾客商品总数,第一行输入顾客总数,接下来每行对应每名顾客,首先输入商品数,然后继续输入每件商品的单价。 按顺序输出每名顾客的商品单价,最后跟上商品总价,一行一个顾客。

测试输入:

  1.  5
  2.  2 2 3
  3.  3 4 9 5
  4.  6 1 5 9 8 2 4
  5.  1 15
  6.  7 4 5 6 1 1 2 3

预期输出:

  1.  2,3,total:5
  2.  4,9,5,total:18
  3.  1,5,9,8,2,4,total:29
  4.  15,total:15
  5.  4,5,6,1,1,2,3,total:22

代码如下:

import java.util.Scanner;

public class Goods {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        int customerNum = input.nextInt();  //商品总数
        int[][] goods = new int[customerNum][];  

        for(int i=0;i<customerNum;i++)
        {
            int n=input.nextInt();   //每个顾客订购的商品个数
            goods[i]=new int[n];
            for(int j=0;j<n;j++){
                goods[i][j]=input.nextInt();    //商品单价
            }
            int sum=0;
            for(int j=0;j<goods[i].length;j++){
                sum+=goods[i][j];
                System.out.print(goods[i][j]+",");
            }
            System.out.print("total:"+sum);
            System.out.println();
        }

        input.close();
    }
}

 3.一维字符数组之大小写转换

编程要求:

创建一维字符数组并赋值(a,B,A,Z,v,b),并转化该数组中的大小写。
提示:a-z的ASCII码分别对应:97-122,A-Z的ASCII码分别对应:65-90。

预期输出:转化后的数组:[x,y,z]


import java.util.Arrays;

public class MaxTest {
    public static void main(String[] args) {
        // 第一步:创建数组并赋值,值为a,B,A,Z,v,b共6个字符。
        char[] chars=new char[]{'a','B','A','Z','v','b'};
        // 第二步:遍历数组元素,如果为小写,请转化为大写,如果为大写,请转化为小写。大小写的ASCII码相差32。
        for(int i=0;i<chars.length;i++)
        {
            char ch=chars[i];
            if(chars[i]>='a'&&chars[i]<='z')
                 chars[i]-=32;
            else if(chars[i]>='A'&&chars[i]<='Z')
                chars[i]=(char)(chars[i]+32);
        }
        // 第三步:输出数组元素
        System.out.println("转化后的数组:"+Arrays.toString(chars));

    }}

4.一维数值数组之成绩统计

编程要求:

仔细阅读给出的代码框架及注释,在 Begin-End 间编写程序代码,求班级数学平均成绩,具体要求如下:
- 接收给定的数据(如:4,88,43,43,98,#...,其中第一个数代表数组长度,
  其余数代表班级所有人数学成绩,# 号用于终止接收数据),遇到 # 号终止接收;
- 求班级数学平均成绩,平均成绩用 double 类型表示。

注意:数字分隔符为中文逗号。


import java.util.Scanner;

public class ArrTest {
    public static void main(String[] args) {
        // 第一步:接收给定的第一个数,用于定义数组长度
        Scanner input = new Scanner(System.in);
        int len=input.nextInt();
        // 第二步:定义数组
        int[] arr =new int[len];
        // 第三步:把成绩赋值给数组元素
        for(int i=0;i<arr.length;i++){
            arr[i]=input.nextInt();
            if(input.hasNext("#")) break;
        }
        // 第四步:求所有成绩的和
        double sum=0;
        for(int i=0;i<arr.length;i++){
              sum+=arr[i];
        }
        // 第五步:求平均成绩
        double p=0;
        p=sum/len;
        System.out.println("数学平均成绩为:"+p);
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值