学校作业:我想开发一个能求n阶行列式和n阶矩阵逆矩阵的计算器,xml已写是6x6的格子,想首先判断输入几阶方阵反馈n的值,就通过判断第一行到第几个格子有值决定。之后求n阶行列式值用了行列式公式,设了int p[][]的矩阵,可是不会在静态函数中给矩阵赋textview里的值,只学过p[0][0] = (EditText)this.findViewById(R.id.editText1);
此外能不能直接在公用里给p数组赋值然后复制p1来计算,(这样应该就不用在静态里赋值)但公用的我不知道放在哪里放这个头下会报错public class MainActivity extends Activity {。逆矩阵的思路是在右侧补充单位矩阵,将左侧矩阵化为单位矩阵右侧就变成逆矩阵了。可以复制一个同阶数组然后将左侧转化为单位矩阵同时对右侧做相同操作,最后在6x6文本框里输出复制的矩阵。有没有大佬可以帮助我修改一下行列式代码写一下逆矩阵代码让它能实现目标并解释一下修改的问题。谢谢谢谢了真写不动了没系统学过Java就要写这个作业,如果逆矩阵不行只有行列式部分也可吧---xml文件在这应该没有问题----------------------------------------------------Java文件在下侧是半成品但我实在不知道怎么完善了。
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >
<EditText
android:id="@+id/editText1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:ems="2"
android:inputType="numberDecimal" >
<requestFocus />
</EditText>
<EditText
android:id="@+id/editText2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/editText1"
android:layout_alignBottom="@+id/editText1"
android:layout_toRightOf="@+id/editText1"
android:ems="2"
android:inputType="numberDecimal" />
<EditText
android:id="@+id/editText3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/editText2"
android:layout_alignBottom="@+id/editText2"
android:layout_toRightOf="@+id/editText2"
android:ems="2"
android:inputType="numberDecimal" />
<EditText
android:id="@+id/editText4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/editText3"
android:layout_toRightOf="@+id/editText3"
android:ems="2"
android:inputType="numberDecimal" />
<EditText
android:id="@+id/editText5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/editText4"
android:layout_alignBottom="@+id/editText4"
android:layout_toRightOf="@+id/editText4"
android:ems="2"
android:inputType="numberDecimal" />
<EditText
android:id="@+id/editText6"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/editText5"
android:layout_alignBottom="@+id/editText5"
android:layout_toRightOf="@+id/editText5"
android:ems="2"
android:inputType="numberDecimal" />
<EditText
android:id="@+id/editText7"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_below="@+id/editText1"
android:ems="2"
android:inputType="numberDecimal" />
<EditText
android:id="@+id/editText8"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/editText1"
android:layout_toRightOf="@+id/editText1"
android:ems="2"
android:inputType="numberDecimal" />
<EditText
android:id="@+id/editText9"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/editText8"
android:layout_alignBottom="@+id/editText8"
android:layout_toRightOf="@+id/editText8"
android:ems="2"
android:inputType="numberDecimal" />
<EditText
android:id="@+id/editText10"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/editText9"
android:layout_alignBottom="@+id/editText9"
android:layout_toRightOf="@+id/editText9"
android:ems="2"
android:inputType="numberDecimal" />
<EditText
android:id="@+id/editText11"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/editText10"
android:layout_alignBottom="@+id/editText10"
android:layout_toLeftOf="@+id/editText6"
android:ems="2"
android:inputType="numberDecimal" />
<EditText
android:id="@+id/editText12"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/editText11"
android:layout_alignBottom="@+id/editText11"
android:layout_alignLeft="@+id/editText6"
android:ems="2"
android:inputType="numberDecimal" />
<EditText
android:id="@+id/editText13"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_below="@+id/editText7"
android:ems="2"
android:inputType="numberDecimal" />
<EditText
android:id="@+id/editText14"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/editText13"
android:layout_alignBottom="@+id/editText13"
android:layout_toRightOf="@+id/editText13"
android:ems="2"
android:inputType="numberDecimal" />
<EditText
android:id="@+id/editText15"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/editText14"
android:layout_alignBottom="@+id/editText14"
android:layout_toRightOf="@+id/editText14"
android:ems="2"
android:inputType="numberDecimal" />
<EditText
android:id="@+id/editText16"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/editText15"
android:layout_alignBottom="@+id/editText15"
android:layout_toRightOf="@+id/editText15"
android:ems="2"
android:inputType="numberDecimal" />
<EditText
android:id="@+id/editText17"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/editText16"
android:layout_alignBottom="@+id/editText16"
android:layout_toLeftOf="@+id/editText12"
android:ems="2"
android:inputType="numberDecimal" />
<EditText
android:id="@+id/editText18"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/editText17"
android:layout_alignBottom="@+id/editText17"
android:layout_alignLeft="@+id/editText12"
android:ems="2"
android:inputType="numberDecimal" />
<EditText
android:id="@+id/editText19"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_below="@+id/editText13"
android:ems="2"
android:inputType="numberDecimal" />
<EditText
android:id="@+id/editText20"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/editText19"
android:layout_alignBottom="@+id/editText19"
android:layout_toRightOf="@+id/editText19"
android:ems="2"
android:inputType="numberDecimal" />
<EditText
android:id="@+id/editText21"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/editText20"
android:layout_alignBottom="@+id/editText20"
android:layout_toRightOf="@+id/editText20"
android:ems="2"
android:inputType="numberDecimal" />
<EditText
android:id="@+id/editText22"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/editText21"
android:layout_alignBottom="@+id/editText21"
android:layout_toRightOf="@+id/editText21"
android:ems="2"
android:inputType="numberDecimal" />
<EditText
android:id="@+id/editText23"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/editText22"
android:layout_alignBottom="@+id/editText22"
android:layout_toLeftOf="@+id/editText18"
android:ems="2"
android:inputType="numberDecimal" />
<EditText
android:id="@+id/editText24"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/editText23"
android:layout_alignBottom="@+id/editText23"
android:layout_alignLeft="@+id/editText18"
android:ems="2"
android:inputType="numberDecimal" />
<EditText
android:id="@+id/editText25"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_below="@+id/editText19"
android:ems="2"
android:inputType="numberDecimal" />
<EditText
android:id="@+id/editText26"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/editText25"
android:layout_alignBottom="@+id/editText25"
android:layout_toRightOf="@+id/editText25"
android:ems="2"
android:inputType="numberDecimal" />
<EditText
android:id="@+id/editText27"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/editText26"
android:layout_alignBottom="@+id/editText26"
android:layout_toRightOf="@+id/editText26"
android:ems="2"
android:inputType="numberDecimal" />
<EditText
android:id="@+id/editText28"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/editText27"
android:layout_alignBottom="@+id/editText27"
android:layout_toRightOf="@+id/editText27"
android:ems="2"
android:inputType="numberDecimal" />
<EditText
android:id="@+id/editText29"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignTop="@+id/editText28"
android:layout_toLeftOf="@+id/editText24"
android:ems="2"
android:inputType="numberDecimal" />
<EditText
android:id="@+id/editText30"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/editText29"
android:layout_alignBottom="@+id/editText29"
android:layout_alignLeft="@+id/editText24"
android:ems="2"
android:inputType="numberDecimal" />
<EditText
android:id="@+id/editText31"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_below="@+id/editText25"
android:ems="2"
android:inputType="numberDecimal" />
<EditText
android:id="@+id/editText32"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/editText31"
android:layout_alignBottom="@+id/editText31"
android:layout_alignLeft="@+id/editText26"
android:ems="2"
android:inputType="numberDecimal" />
<EditText
android:id="@+id/editText33"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/editText32"
android:layout_alignBottom="@+id/editText32"
android:layout_alignLeft="@+id/editText27"
android:ems="2"
android:inputType="numberDecimal" />
<EditText
android:id="@+id/editText34"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/editText33"
android:layout_alignBottom="@+id/editText33"
android:layout_toRightOf="@+id/editText33"
android:ems="2"
android:inputType="numberDecimal" />
<EditText
android:id="@+id/editText35"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/editText34"
android:layout_alignBottom="@+id/editText34"
android:layout_toLeftOf="@+id/editText30"
android:ems="2"
android:inputType="numberDecimal" />
<EditText
android:id="@+id/editText36"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/editText35"
android:layout_alignBottom="@+id/editText35"
android:layout_alignLeft="@+id/editText30"
android:ems="2"
android:inputType="numberDecimal" />
<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/button1"
android:layout_alignBottom="@+id/button1"
android:layout_alignLeft="@+id/editText33"
android:layout_toLeftOf="@+id/editText35"
android:text="求逆" />
<Button
android:id="@+id/button3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/button2"
android:layout_alignBottom="@+id/button2"
android:layout_alignLeft="@+id/editText35"
android:layout_alignRight="@+id/editText36"
android:text="清空" />
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="@+id/button2"
android:layout_alignLeft="@+id/editText31"
android:layout_alignRight="@+id/editText36"
android:layout_alignTop="@+id/textView1"
android:text="" />
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/textView2"
android:layout_alignRight="@+id/editText32"
android:layout_below="@+id/editText31"
android:layout_marginTop="50dp"
android:text="计算"
android:onClick="GetValue"/>
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="@+id/button1"
android:layout_alignLeft="@+id/editText31"
android:layout_below="@+id/editText31"
android:text="TextView" />
</RelativeLayout>
Java文件
package com.example.calculatorstrong;
import com.example.calculator.R;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
p[0][0] = (EditText)this.findViewById(R.id.editText1);
//直接这么赋值吗但之前在哪里定义数组p 其余省略
TextView anwser = (TextView)this.findViewById(R.id.textView2);
}
public static double GetValue(int p[][], int n) {
if (n == 1) // 如果是一阶行列式,直接返回该元素
return p[0][0];
double sum = 0; // 累加求和变量
for (int j = 0; j < n; j++) {// 遍历最后一行各元素,p[n - 1][j]
int pt = (n - 1) + j; // 符号判断指数
double[][] p1 = new double[n][n];
for (int row = 0; row < n; row++) {
for (int col = 0; col < n; col++) {
p1[row][col] = p[row][col];
}
}
for (int index = 0; index < n - 1; index++) {
for (int index1 = j; index1 < n - 1; index1++) {
p1[index][index1] = p1[index][index1 + 1];
}
}
// 此过程,截取临时数组 p1 左上角 n-1 阶行列式,提取元素 p[n-1][j] 的余子式
double[][] temp = new double[n - 1][n - 1];
for (int row = 0; row < n - 1; row++) {
for (int col = 0; col < n - 1; col++) {
temp[row][col] = p1[row][col];
}
}
sum += p[n - 1][j] * Math.pow(-1, pt) * GetValue(temp, n - 1);
// System.out.println(p[n - 1][j] + " * " + Math.pow(-1, pt) + " * " + GetValue(p1, n - 1));
}
return sum;
}
}