编写程序实现数组转置
本程序思想较为简单,但是,在我们定义Java数组过程中,我们应当注意一些操作。先给出程序代码,再进行分析
import java.util.*;
public class ju {
public static void main(String[] args) {
Scanner input=new Scanner(System.in); //定义一个input输入对象
int[][] Aerry=new int[3][3];
int num;
for(int i=0;i<3;i++) { //用于得到数组
System.out.println("请在下方输入"+i+"行元素");
for(int j=0;j<3;j++) {
System.out.print("请输入"+j+"列元素\t");
Aerry[i][j]=input.nextInt();
}
}
for(int i=0;i<3;i++) { //转置数组
for(int j=0;j<i;j++) {
num=Aerry[i][j];
Aerry[i][j]=Aerry[j][i];
Aerry[j][i]=num;
}
}
for(int i=0;i<3;i++) { //打印数组
for(int j=0;j<3;j++) {
System.out.print(Aerry[i][j]+"\t");
}
System.out.println("\n");
}
input.close(); //关闭输入
}
}
得到的程序运行结果(界面不是很美观)
请在下方输入0行元素
请输入0列元素 1
请输入1列元素 2
请输入2列元素 3
请在下方输入1行元素
请输入0列元素 1
请输入1列元素 2
请输入2列元素 3
请在下方输入2行元素
请输入0列元素 1
请输入1列元素 2
请输入2列元素 3
1 1 1
2 2 2
3 3 3
这里面我们需要注意两个点:
1、数组
(1)int[][] Aerry在栈内存中分配了一块空间,这个空间存放了一个地址,通过这个地址我们可以得到一个堆内存,然后在本例中,堆内存(由栈内存指向的)分别存放了堆内存的地址,然后堆内存(由堆内存指向的)存放了具体的值。在数组初始化的过程中,倘若我们还没有对其赋值,默认的:int为0、float为0.0、boolean为false、引用数据类型为null。
(2)在数组分配过程中,程序执行完,由JVM(Java Vritual Machine,Java虚拟机)的垃圾回收机制对堆内存中的空间进行回收。
(3)for(int n:num) //其中num为int型的一维数组
这个方式为foreach遍历,不过为只读模式,无法通过这种方法对数组进行修改。
还有一种遍历方式:利用Arrays类中的toString功能
System.out.println(Arrays.toString(num));
他是将数组转换成一个字符串经行输出。
(4)可以利用数组的length属性,例如num.length查看数组长度。
3、键盘输入
本博客介绍两种Java输入方式:
(1)利用java.util.Scanner类方法(本例中使用的方法)
1)首先要定义一个输入对象 Scanner input = new Scanner(System in); //Java区分大小写
2)使用输入对象num=input.nextInt(); //输入int数据类型
单精度:nextFloat()
双精度:nextDouble()
字符串:next()
3)最后还得使用input.close(); //关闭输入流
(2)利用BufferedReader读入文本
//定义文本输入对象
BufferedReader buff = new BufferedReader(new InputStreamReader(System.in));
//使用
char str = buff.read(); //读取单个字符
String str = buff.readLine(); //读取字符串
这个方法较为繁琐。
通过上面的学习,我们更明白,在Java中,都是通过对类的操作进行的。可以编写一个行列不等的数组进行转置。