1、什么是二维数组以及二维数组的写法
public class ArrayDemo01 {
public static void main(String[] args) {
/*
二维数组:即数组的嵌套,数组里面的元素又是一个数组
*/
//声明二维数组,数据类型[][] 数组名; 或者 数据类型 数组名[][];
//声明一个int类型的二维数组
int[][] nums;
//声明一个String类型的二维数组
String[][] strs;
//分配空间(告诉你这个数组里可以存储多少个元素): 数组名 = new 数据类型[数组长度][数组长度]; 或者 数组名 = new 数据类型[数组长度][];
//注意:二维数组在分配空间的时候,第一个数组长度必须要写,告诉你这个二维数组里有多少个元素,第二数组长度可以写,可以不写,不过写了,表示这个二维数组里的里面的元素(一维数组)的长度,如果没有写,这个二维数组里面的元素(一维数组)长度可以不一样
//给nums数组分配空,这个数组可以存储3个元素,里面的元素长度都相同,都为5
nums = new int[3][5];
//给strs数组分配空间,这个数组可以存储5个元素,里面的元素长度不相同
strs = new String[5][];
//赋值:数组名[下标][下标] = 数据;
//给nums数组里的第一个元素(一维数组)下标为0的元素赋值为9
nums[0][0] = 9;
nums[2][4] = 84;
// nums[2][5] = 99;//ArrayIndexOutOfBoundsException
// System.out.println(nums[2][5]);
//操作数据:数组名[下标][下标];
}
}
public class ArrayDemo02 {
public static void main(String[] args) {
// 二维数组的声明和分配空间合并写
//数据类型[][] 数组名=new 数据类型[数组长度][数组长度]; 或者 数据类型[][] 数组名=new 数据类型[数组长度][];
int[][] nums = new int[5][3];
int[][] nums2 = new int[3][];
String[][] strs = new String[6][5];
String[][] strs2 = new String[8][];
//二维数组的声明、分配空间、赋值合并写
//数据类型[][] 数组名 = new 数据类型[][]{{数据1,数据2,...,数据n},{数据1,数据2,...,数据n},....,{数据1,数据2,...,数据n}}; 注意:new后面的两个[][]里都不能写数组长度
char[][] chars = new char[][]{{'a','b','c'},{'c','d'},{'m'}};
//二维数组的声明、分配空间、赋值合并的简写方式
//数据类型[][] 数组名 = {{数据1,数据2,...,数据n},{数据1,数据2,...,数据n},....,{数据1,数据2,...,数据n}};
double[][] nums3 = {{2.5,5.5},{11.5,55.5},{99.9,88.8},{70.5,50}};
}
}
2、求一个3*3矩阵对角线元素之和
<提示>程序分析:利用双重for循环控制输入二维数组,再将a[i][i]累加后输出。
import java.util.Scanner;
public class Subject02 {
public static void main(String[] args) {
//声明一个二维数组
int[][] num=new int[3][3];
//声明Scanner类
Scanner sc=new Scanner(System.in);
for (int i=0;i< num.length;i++){
for (int j=0;j<num[i].length;j++){
System.out.println("请输入第"+(i+1)+"行第"+(j+1)+"个数据");
num[i][j]=sc.nextInt();
}
System.out.println();
}
System.out.println("这个矩阵大致形状为:");
int sum=0;
for (int i=0;i<num.length;i++){
for (int j=0;j<num[i].length;j++){
if (i==j){
sum+=num[i][j];
}
System.out.print(num[i][j]+" ");
}
System.out.println();
}
System.out.println("对角线之和为:"+sum);
}
}
3、定义一个4行4列的二维数组,逐个从键盘输入值,然后将第1行和第4行的数据进行交换,将第2行和第3行的数据进行交换。
import java.util.Scanner;
public class Subject03 {
public static void main(String[] args) {
//定义一个4行4列的二维数组,逐个从键盘输入值,
// 然后将第1行和第4行的数据进行交换,
// 将第2行和第3行的数据进行交换
//声明二维数组
int[][] num=new int[4][4];
//声明Scanner类
Scanner sc=new Scanner(System.in);
//输入数据
for (int i=0;i<num.length;i++){
for (int j=0;j<num[i].length;j++){
System.out.println("请输入第"+(i+1)+"行第"+(j+1)+"列的数");
num[i][j]=sc.nextInt();
}
}
//遍历
System.out.println("输入的矩阵为");
for (int i=0;i<num.length;i++){
for (int j=0;j<num[i].length;j++){
System.out.print(num[i][j]+" ");
}
System.out.println();
}
int[] temp=new int[4];
for (int i=0;i<num.length;i++){
temp[i]=num[0][i];
num[0][i]=num[3][i];
num[3][i]=temp[i];
temp[i]=num[1][i];
num[1][i]=num[2][i];
num[2][i]=temp[i];
}
//遍历
System.out.println("转化后的矩阵为:");
for (int i=0;i<num.length;i++){
for (int j=0;j<num[i].length;j++){
System.out.print(num[i][j]+" ");
}
System.out.println();
}
}
}
4、定义一个3行4列的二维数组,逐个从键盘输入值,编写程序将四周的数据清0。
import java.util.Scanner;
public class Subject04 {
public static void main(String[] args) {
//定义一个3行4列的二维数组,逐个从键盘输入值,编写程序将四周的数据清0
//声明二维数组
int[][] num=new int[3][4];
//声明Scanner类
Scanner sc=new Scanner(System.in);
//输入数据
for (int i=0;i<num.length;i++){
for (int j=0;j<num[i].length;j++){
System.out.print("请输入第"+(i+1)+"行第"+(j+1)+"列的数据");
num[i][j]=sc.nextInt();
}
System.out.println();
}
//遍历
System.out.println("输入矩阵为:");
for (int i = 0; i < num.length; i++) {
for (int j = 0; j < num[i].length; j++) {
System.out.print(num[i][j]+" ");
}
System.out.println();
}
for (int i=0;i<num.length;i++){
for (int j=0;j<num[i].length;j++){
if (i==0||i==num.length-1){
num[i][j]=0;
}else if (j==0||j==num[i].length-1){
num[i][j]=0;
}
}
}
//遍历
System.out.println("输出修改后的矩阵为:");
for (int i = 0; i < num.length; i++) {
for (int j = 0; j < num[i].length; j++) {
System.out.print(num[i][j]+" ");
}
System.out.println();
}
}
}
5、定义一个3行4列的二维数组,逐个从键盘输入值,将左下三角的值清0。
import java.util.Scanner;
public class Subject05 {
public static void main(String[] args) {
//定义一个3行4列的二维数组,逐个从键盘输入值,将左下三角的值清0
//声明数组
int[][] num = new int[3][4];
//声明Scanner类
Scanner sc = new Scanner(System.in);
for (int i = 0; i < num.length; i++) {
for (int j = 0; j < num[i].length; j++) {
System.out.print("请输入第" + (i + 1) + "行第" + (j + 1) + "列的数据");
num[i][j] = sc.nextInt();
}
System.out.println();
}
//遍历
System.out.println("输入的矩阵为:");
for (int i = 0; i < num.length; i++) {
for (int j = 0; j < num[i].length; j++) {
System.out.print(num[i][j] + "\t");
}
System.out.println();
}
for(int i = 0;i < num.length;i++){
for(int j = 0;j < num[i].length;j++){
if(j<=i) {
num[i][j] = 0;
}
}
}
System.out.println("输出的矩阵为:");
for (int i = 0; i < num.length; i++) {
for (int j = 0; j < num[i].length; j++) {
System.out.print(num[i][j] + "\t");
}
System.out.println();
}
}
}
6、定义一个4行4列的二维数组,逐个从键盘输入值,将对角线的值清0。
import java.util.Scanner;
public class Subject06 {
public static void main(String[] args) {
//定义一个4行4列的二维数组,逐个从键盘输入值,将对角线的值清0
//声明二维数组
int[][] array=new int[4][4];
//声明Scanner类
Scanner sc=new Scanner(System.in);
for (int i=0;i<array.length;i++){
for (int j=0;j<array[i].length;j++){
System.out.print("请输入第"+(i+1)+"行第"+(j+1)+"列的数据:");
array[i][j]=sc.nextInt();
}
System.out.println();
}
//遍历
System.out.println("输入的矩阵为:");
for (int i = 0; i < array.length; i++) {
for (int j = 0; j < array[i].length; j++) {
System.out.print(array[i][j]+" ");
}
System.out.println();
}
for (int i = 0; i < array.length; i++) {
for (int j = 0; j < array[i].length; j++) {
if(i==j||i+j==3){
array[i][j]=0;
}
}
}
//再遍历
System.out.println("输出的矩阵为:");
for (int i = 0; i < array.length; i++) {
for (int j = 0; j < array[i].length; j++) {
System.out.print(array[i][j]+" ");
}
System.out.println();
}
}
}
7、定义一个N*N二维数组,从键盘上输入值,找出每行中最大值组成一个一维数组并输出。
import java.util.Arrays;
import java.util.Scanner;
public class Subject07 {
public static void main(String[] args) {
//定义一个N*N二维数组,从键盘上输入值,找出每行中最大值组成一个一维数组并输出;
//声明Scanner类
Scanner sc=new Scanner(System.in);
System.out.println("请输入你想输入的元素个数:");
int N=sc.nextInt();
//声明二维数组
int[][] array=new int[N][N];
//输入数据
for (int i = 0; i < array.length; i++) {
for (int j = 0; j < array[i].length; j++) {
System.out.print("请输入第"+(i+1)+"行第"+(j+1)+"列的元素:");
array[i][j]=sc.nextInt();
}
System.out.println();
}
//遍历
System.out.println("输入元素组成的数组为:");
for (int i = 0; i < array.length; i++) {
for (int j = 0; j < array[i].length; j++) {
System.out.print(array[i][j]+"\t");
}
System.out.println();
}
//比较大小,声明装最大值的数组
int[] newMax=new int[N];
for (int i = 0; i < array.length; i++) {
int max=array[i][0];
for (int j = 0; j < array[i].length; j++) {
if (max<array[i][j]){
max=array[i][j];
}
}
newMax[i]=max;
}
System.out.println("最大元素组成的数组为:");
System.out.println(Arrays.toString(newMax));
}
}
8、从键盘上输入一个 3*4的整型数组,求出其中的最大值和最小值,并显示出。
import java.util.Scanner;
public class Subject08 {
public static void main(String[] args) {
//从键盘上输入一个 3*4 的整型数组,求出其中的最大值和最小值,并显示出
//声明二维数组
int[][] array=new int[3][4];
//声明Scanner类
Scanner sc=new Scanner(System.in);
//输入数据
for (int i = 0; i < array.length; i++) {
for (int j = 0; j < array[i].length; j++) {
System.out.print("请输入第"+(i+1)+"行第"+(j+1)+"列的元素");
array[i][j]=sc.nextInt();
}
System.out.println();
}
//遍历
System.out.println("整型数组为:");
for (int i = 0; i < array.length; i++) {
for (int j = 0; j < array[i].length; j++) {
System.out.print(array[i][j]+"\t");
}
System.out.println();
}
//求最大值和最小值
int max=array[0][0];
int min=array[0][0];
for (int i = 0; i < array.length; i++) {
for (int j = 0; j < array[i].length; j++) {
if (max<array[i][j]){
max=array[i][j];
}
if (min>array[i][j]){
min=array[i][j];
}
}
}
System.out.println("数组最大值为:"+max+"\t"+"数组最小值为:"+min);
}
}
9、有10个数字要求分别用选择法和冒泡法从大到小输出。
import java.util.Arrays;
import java.util.Scanner;
public class subject09 {
public static void main(String[] args) {
//有10个数字要求分别用选择法和冒泡法从大到小输出
//声明数组
int[] array=new int[10];
//声明Scanner类
Scanner sc=new Scanner(System.in);
//输入数据
for (int i=0;i<array.length;i++){
System.out.print("请输入第"+(i+1)+"个数字:");
array[i]=sc.nextInt();
}
System.out.println("输入的数组为:");
System.out.println(Arrays.toString(array));
//声明一个新数组用来存储原来的数组
int[] arrays=new int[array.length];
for (int i=0;i<array.length;i++){
arrays[i]=array[i];
}
System.out.println("声明的新的数组为:");
System.out.println(Arrays.toString(arrays));
//冒泡排序
System.out.println("***冒泡排序***");
for (int i=0;i<array.length-1;i++){
for (int j=0;j<array.length-1-i;j++){
if (array[j]<array[j+1]){
int temp=array[j];
array[j]=array[j+1];
array[j+1]=temp;
}
}
}
System.out.println(Arrays.toString(array));
//选择法
System.out.println("***选择法***");
for (int i=0;i<arrays.length;i++){
int index=0;
int min=arrays[0];
for (int j=0;j<arrays.length-i;j++){
if (min>arrays[j]){
min=arrays[j];
index=j;
}
}
int temp=arrays[arrays.length-i-1];
arrays[arrays.length-i-1]=arrays[index];
arrays[index]=temp;
}
System.out.println(Arrays.toString(arrays));
// for (int i = 0; i < arrays.length; i++) {
// int min = 0;
// int temp = 0;
// // 找出最大值索引,赋值给max
// for (int j = 0; j < arrays.length - i; j++) {
// if (arrays[j] < arrays[min]) {
// min = j;
// }
// }
// // 将最大值和本次最后的项进行互换
// temp = arrays[arrays.length - 1 -i];
// arrays[arrays.length - 1 -i] = arrays[min];
// arrays[min] = temp;
// }System.out.println(Arrays.toString(arrays));
// }
// String end = "\n";
// int index;
// for (int i = 1;i < arrays.length;i++) {
// index = 0;
// for(int j = 1;j <= arrays.length-i;j++) {
// if (arrays[j] > arrays[index]) {
// index = j; // 查找最大值
// }
// }
// end = arrays[index] + " " + end; // 定位已排好的数组元素
// int temp = arrays[arrays.length-i];
// arrays[arrays.length-1] = arrays[index];
// arrays[index] = temp;
// System.out.print("【");
// for (int j = 0;j < arrays.length-i;j++) {
// System.out.print(arrays[j]+" ");
// }
// System.out.print("】"+end);
// }
}
}
版权声明:本文为qq_72629130原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。