目录
利用随机1~9整数生成3*3的二维数组,使二维数组每行,每列、以及斜线上的数字之和均为15,并输出这个二维数组
按自然数从小到大的标准为顺序,对以下数组求其逆序数,并列出逆序对:
一、实验目的
【目的要求】
了解字符串的常用方法及数组的length属性的使用
掌握对数组的for-each循环以及对字符串的比较和运算
【注意事项】
注意电源插座的用电安全;
遵守计算机的使用注意事项;
防范病毒。
二、实验设备
电脑
window系统
JDK环境
记事本
【相关知识】
数组的语法定义:
- a = new int[100];
- str = new String[]{"黄","红","绿","白","黑","蓝","紫"};
- f={12.4,12.5,12.1,12.3,12.2,12.3};
二维数组的定义
- a = {{1,2,3},{4,5,6,},{7,8,9}}
- t = new int[3][3]
内容
利用随机1~9整数生成3*3的二维数组,使二维数组每行,每列、以及斜线上的数字之和均为15,并输出这个二维数组
mport java.util.Random;
public class maxtrix_15{
public static void main(String[] args) {
int[][] matrix = new int[3][3];
int sum1,sum2,sum3,sum4,sum5,sum6,sum7,sum8,count=0;
System.out.println("随机生成三个3X3矩阵:使每行,每列、以及斜线上的数字之和均为15");
//创建矩阵
while(true){
for (int i = 0; i <= 2; i++) {
for (int j = 0; j <= 2; j++) {
matrix[i][j] = new Random().nextInt(9) + 1;
matrix[1][1]=5;
}
}
//行元素相加
sum1=matrix[0][0]+matrix[0][1]+matrix[0][2];
sum2=matrix[1][0]+matrix[1][1]+matrix[1][2];
sum3=matrix[2][0]+matrix[1][1]+matrix[2][2];
//列元素相加
sum4=matrix[0][0]+matrix[1][0]+matrix[2][0];
sum5=matrix[0][1]+matrix[1][1]+matrix[2][1];
sum6=matrix[0][2]+matrix[1][2]+matrix[2][2];
//对角线元素相加
sum7=matrix[0][0]+matrix[1][1]+matrix[2][2];
sum8=matrix[2][0]+matrix[1][1]+matrix[0][2];
//输出矩阵
if(sum1==sum2&&sum1==sum3&&sum1==sum4&&sum1==sum5&&sum1==sum6&&sum1==sum7&&sum1==sum8){
count++;
if(count<4){
System.out.println("第"+count+"个例子:");
for(int i=0;i<=2;i++)
{
for(int j=0;j<=2;j++)
{
System.out.print(matrix[i][j]+"\t");
}
System.out.println("\n");
}
}else {
break;
}
}
}
}
}
通过编程实现求解三阶行列式,例如:
代码如下:
import java.util.Scanner;
public class det3_calculation {
public static void main(String[] args) {
int sum1,sum2,sum;
int[][] a = new int[3][3];
Scanner sc=new Scanner(System.in);
System.out.println("输入一个三阶行列式:");
for(int i=0;i<a.length;i++){
for(int j=0;j<a.length;j++){
a[i][j]=sc.nextInt();
}
}
for(int i=0;i<a.length;i++){
for(int j=0;j<a.length;j++){
System.out.print(a[i][j]+"\t");
}
System.out.println("\n");
}
sum1=a[0][2]*a[1][0]*a[2][1]+a[0][1]*a[1][2]*a[2][0]+a[0][0]*a[1][1]*a[2][2];
sum2=a[2][2]*a[0][1]*a[1][0]+a[2][1]*a[1][2]*a[0][0]+a[0][2]*a[1][1]*a[2][0];
sum=sum1-sum2;
System.out.println("这个三阶行列式的值是:"+sum);
}
}
按自然数从小到大的标准为顺序,对以下数组求其逆序数,并列出逆序对:
代码如下:
import java.util.Scanner;
public class inversenumber {
public static void main(String[] args) {
int[] a=new int[6];
int count=0;
Scanner sc=new Scanner(System.in);
System.out.println("输入一组数:");
for(int i=0;i<a.length;i++){
a[i]=sc.nextInt();
}
System.out.print("[");
for(int x=0; x<a.length; x++) {
if(x == a.length-1) {
System.out.print(a[x]);
} else {
System.out.print(a[x]+", ");
}
}
System.out.println("]");
System.out.println("逆序对如下");
for(int i=0;i<a.length;i++){
for(int j=i+1;j<a.length;j++){
if (a[i]>a[j]){
count++;
System.out.println("{"+a[i]+","+a[j]+"}");
}
}
}
System.out.println("逆序数值为:"+count);
}
}
实验小结
数组通常用在什么地方?
答:数组长度不可以改变,所以用于建立矩阵存储数据
数组为什么不算基本数据类型?
答:数组不算是基础数据类型的,基础的数据类型只有整形,浮点型,双精度浮点(double)字符型等,这些是基础数据类型,就是指不能在分割的类型,属于原子类型。而类似数组,集合,自定义的复杂的数据结构都不是基础数据类型。当然可以自己实现数组,数组实质就是一个顺序表,只是其中不包含一些查询插入等方法,也可以自己定义的。自己实现array那index是指向数组第一个元素的,要获取元素的话用你定义的array.element来调用。
数组中的元素类型是否可以不一样?
答:把具有相同类型的若干变量按有序的形式组织起来的一种形式。这些按序排列的同类数据元素的集合称为数组。所以,既然是数组,那它每个的元素的类型肯定是一样的。