重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
你的代码有很多问题,最主要的一个吧就是你的inverse函数的参数没传进去,你自己定义一个空矩阵num[][],计算秩,怎么算都是零,然后就返回 null,自然就报空指针异常了。我改好了程序,供你参考:
创新互联服务项目包括城步网站建设、城步网站制作、城步网页制作以及城步网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,城步网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到城步省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!
import java.util.Scanner;
public class Project2 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("请依次输入:a11、a12、a13、a21、a22、a23、a31、a32、a33\n");
int i, j;
double[][] number = new double[3][3];
double[][] number0 = new double[3][3];
for (i = 0; i 3; i++)
for (j = 0; j 3; j++)
number[i][j] = input.nextDouble();
System.out.println("Input Matrix is :");
System.out.println(number[0][0] + " " + number[0][1] + " "
+ number[0][2]);
System.out.println(number[1][0] + " " + number[1][1] + " "
+ number[1][2]);
System.out.println(number[2][0] + " " + number[2][1] + " "
+ number[2][2]);
number0 = inverse(number);
if (number0 != null) {
System.out.println("Inverse Matrix is :");
System.out.println(number0[0][0] + " " + number0[0][1] + " "
+ number0[0][2]);
System.out.println(number0[1][0] + " " + number0[1][1] + " "
+ number0[1][2]);
System.out.println(number0[2][0] + " " + number0[2][1] + " "
+ number0[2][2]);
} else
System.out.println("矩阵的秩为零");
}
public static double[][] inverse(double[][] A) {
double z;
double A1, B, C, D, E, F, G, H, I;
// double [][] num = new double [3][3];
double[][] num0 = new double[3][3];
System.out.println("Inverse Matrix A is :");
System.out.println(A[0][0] + " " + A[0][1] + " " + A[0][2]);
System.out.println(A[1][0] + " " + A[1][1] + " " + A[1][2]);
System.out.println(A[2][0] + " " + A[2][1] + " " + A[2][2]);
z = A[0][0] * A[1][1] * A[2][2] + A[2][0] * A[0][1] * A[1][2] + A[0][2]
* A[1][0] * A[2][1] - A[0][2] * A[1][1] * A[2][0] - A[0][0]
* A[1][2] * A[2][1] - A[2][2] * A[1][0] * A[0][1];
if (z == 0)
return null;
else {
A1 = A[0][0];
B = A[0][1];
C = A[0][2];
D = A[1][0];
E = A[1][1];
F = A[1][2];
G = A[2][0];
H = A[2][1];
I = A[2][2];
num0[0][0] = 1 / z * (E * I - F * H);
num0[0][1] = 1 / z * (C * H - B * I);
num0[0][2] = 1 / z * (B * F - C * E);
num0[1][0] = 1 / z * (F * G - D * I);
num0[1][1] = 1 / z * (A1 * I - C * G);
num0[1][2] = 1 / z * (C * D - A1 * F);
num0[2][0] = 1 / z * (D * H - E * G);
num0[2][1] = 1 / z * (B * H - A1 * H);
num0[2][2] = 1 / z * (A1 * E - B * D);
return num0;
}
}
}
Connection conn;
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
conn = DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:taian", "hr", "hr"); //连接Oracle
conn.setAutoCommit(false);
Statement myStat = conn.createStatement();
String sqlTxt = "update BankAccount set account=account-" + this.amount.getText() + " where accId=" + this.payOut.getText();
System.out.println("第一步 执行:" + sqlTxt);
//
try {
int affectedRow = myStat.executeUpdate(sqlTxt);
System.out.println("从汇出方扣减" + this.amount.getText() + "元,修改了" + affectedRow + "行数据.");
sqlTxt = "update BankAccount set account=account+" + this.amount.getText() + " where accId=" + this.saveIn.getText();
System.out.println("第二步 执行:" + sqlTxt);
affectedRow = myStat.executeUpdate(sqlTxt);
System.out.println("从汇入方增加" + this.amount.getText() + "元,修改了" + affectedRow + "行数据.");
// 事务成功结束, 提交
conn.commit();
} catch (SQLException sqlEx) {
System.out.println
sqlEx.printStackTrace();
// 事务中断,整体回滚到事务开始前状态
conn.rollback();
}
myStat.close();
conn.close();
} catch (Exception ex) {
System.out.println("反正是出错了.");
}
}//
如果是修改C的代码,我劝你不要
如果是修改rt包下的代码,我建议extends原有类,然后override你要重写的方法
当然,改都是可以改的,只是没必要
。。。 ,你没看那是.class文件不是.java文件吗,那是编译后生成的文件自然不能编辑。
这些东西都是你classpath下面java文件自动编译生成的,或者就是你项目的一些依赖包里面的东西。
你要编辑就自己拿出来在外面其他工具里面自己改。
你要是想学jdk自己的一些东西,你去网上找jdk源码下,是java文件的那种。