一维数组相关知识:
声明数值数组变量,用于代表一个对象, 只是一个名字而已, 对象还没有创建,下面是声明数值数组变量的语法:
数据类型[] 数组名; // 中括号中不能有数字
示例:
声明一个用于存储int类型的数组变量 arr。
int [] arr;
声明一个用于存储long类型的数组变量 arr。
long [] arr;
声明一个用于存储double类型的数组变量 arr。
double [] arr;
创建一维数值数组
Java 语言使用 new 操作符来创建数组,语法如下:
new 数据类型[数组长度];
后期要想使用该数组,需要把数组变量指向该数组。 示例:
// 声明一个数组变量并指向一个用于存储10个int类型的数组
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 中声明二维数组变量的方式有以下两种:
数据类型[][] 变量名; // 方法一, 推荐使用
数据类型 变量名[][]; // 方法二, 不推荐使用
以下是声明示例:
int[][] matrix1; //声明方式一, 推荐使用
int matrix2[][]; //声明方式二, 不推荐使用
在声明了二维数组变量后,我们可以创建二维数组对象,并将其引用赋值给二维数组变量。同一维数组类似,创建二维数组对象同样需要用到 new
操作符:
matrix1 = new int[5][5];
二维数组中使用两个下标,一个表示行,另一个表示列。同一维数组一样,每个标索引值都是 int
型的,从 0 开始,如下图所示:
其实,二维数组可以理解为由一维数组所构成的数组。以上代码中,array 存储了 4 个长度相同的一维数组,下标从 0 到 3。这 4 个数组分别存储了 3 个 int 类型的数据元素,下标从 0 到 2。 #####获取二维数组的长度 二维数组实际上是一个数组,它的每个元素都是一个一维数组。数组 x
的长度是数组中元素的个数,可以用 x.length
获取该值。 对于二维数组 x
,x[0]
、x[1]
、x[2]
、...、x[x.length-1]
都是一维数组。 那么 x[x.length-1].length
则是 x 所引用二维数组中最后一个一维数组的长度。 x.length
即 x 引用的二维数组包含的一维数组数量。
1.二维数组之矩阵列求和
编程要求:
根据提示,在右侧编辑器补充代码,输入矩阵进行列求和,第一行输入矩阵行列数,然后输入矩阵,输出每列的和。
测试输入:
4 4
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
预期输出:
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.二维数组之商品收银
编程要求:
根据提示,在右侧编辑器补充代码,计算不同顾客商品总数,第一行输入顾客总数,接下来每行对应每名顾客,首先输入商品数,然后继续输入每件商品的单价。 按顺序输出每名顾客的商品单价,最后跟上商品总价,一行一个顾客。
测试输入:
5
2 2 3
3 4 9 5
6 1 5 9 8 2 4
1 15
7 4 5 6 1 1 2 3
预期输出:
2,3,total:5
4,9,5,total:18
1,5,9,8,2,4,total:29
15,total:15
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);
}
}