(一)一维数组的定义和使用
实验1 使用new操作符形式创建数组,要求定义一个ArrayDemo类,在该类的main方法中创建和使用数组,完成一个int型存储1到10的数的10元素的数组,并通过for语句完成1到10的赋值。并按照如下注释行编写代码。
//定义一个数组名为a的int型一维数组
//通过new操作符完成数组a的空间分配
//通过for语句给数组赋值
//使用for语句输出数组的值,输出个数使用数组的属性//length,不要直接使用数据
package com.song.array;
import java.util.Scanner;
public class ArrayDemo01 {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
int[] a;//定义一个数组名为a的int型一维数组
a = new int[10]; //通过new操作符完成数组a的空间分配
for (int i = 0; i < a.length; i++) {//通过for语句给数组赋值
a[i] = i;
}
for (int i = 0; i < a.length; i++) {//使用for语句输出数组的值,输出个数使用数组的属性length,不要直接使用数据
System.out.println(a[i]);
}
}
}
(二)二维数组的定义和使用
实验4 求一个3*3矩阵对角线元素之和。
要求:定义一个ArrayDemo4类,在main方法中定义一个3行3列二维数组,然后从标准输入读入9个浮点数,计算输出该矩阵对角线元素(行列相同的元素)之和。
package com.song.array;
import java.util.Scanner;
public class ArrayDemo04 {
public static void main(String[] args) {
double[][] a = new double[3][3];
Scanner sc = new Scanner(System.in);
double sum1 = 0;
for (int i = 0; i < a.length; i++) {
for (int j = 0; j < a[i].length; j++) {
double n = sc.nextDouble();
if (i == j)
sum1 += n;
}
}
System.out.println("正对角线之和是:"+sum1);
}
}
(三)数组的静态初始化
实验6 数值类型数组的静态初始化,通过上机实验,分析如下二维数组(数组的数组)行列数,如果每行的列数不同,请分别说明出他的列数。
int[][] a = { { 1, 3, 2 }, { 2}};
int[][] b ={ { 1, 2, 3 }, { 2, 3, 9,4 }, { 1, 3, 4 ,6,8,10} };
要求:定义一个ArrayDemo6类,在main方法中静态定义数组a和b,然后使用数组名输出每个数组的行数和每行的列数,输出效果如下,程序中只能使用数组名,不能使用人工分析的结果:
数组a有2行
数组a的第1行有3列
数组a的第2行有1列
数组b有3行
package com.song.array;
public class ArrayDemo06 {
public static void main(String[] args) {
int[][] a = {{1, 3, 2}, {2}};
int[][] b = {{1, 2, 3}, {2, 3, 9, 4}, {1, 3, 4, 6, 8, 10}};//静态定义数组a和b
System.out.println("数组a有"+a.length+"行");
for(int i=0;i<a.length;i++)
{
System.out.println("数组a的第"+(i+1)+"行有"+a[i].length+"列");//使用数组名输出每个数组的行数和每行的列数
}
System.out.println("数组a有"+b.length+"行");
for(int i=0;i<b.length;i++)
{
System.out.println("数组b的第"+(i+1)+"行有"+b[i].length+"列");
}
}
}