问题描述
主要是动态数组那里我不明白怎么搞定问题多多找到了一个C++编写的程序本人想用java来实现希望有高手能帮我讲代码写出来或者指点一下感激不尽了!本人刚刚接触Java还不怎么熟悉主要是以下代码不知道用java如何实现:(主要是二维数组的动态声明以及添加和遍历)voidJacobi(vector<vector<double>>A,vector<double>B,intn){vector<double>X(n,0);vector<double>Y(n,0);vector<double>D(n,0);intk=0;//记录循环次数do{X=Y;for(inti=0;i<n;i++){doubletem=0;for(intj=0;j<n;j++){if(i!=j)tem+=A[i][j]*X[j];}Y[i]=(B[i]-tem)/A[i][i];cout<<left<<setw(8)<<Y[i]<<"";}cout<<endl;k++;if(k>100){cout<<"迭代失败!(可能是函数不收敛)"<<endl;return;}for(inta=0;a<n;a++){D[a]=X[a]-Y[a];}}while(MaxOfList(D)>0.00001||MaxOfList(D)<-0.00001);return;}//以下是C++完整代码希望有大神帮我改成java的感激不尽!!!!#include<iostream>#include<iomanip>#include<string>#include<vector>usingnamespacestd;//函数求数组中的最大值doubleMaxOfList(vector<double>x){doublemax=x[0];intn=x.size();for(inti=0;i<n;i++)if(x[i]>max)max=x[i];returnmax;}//雅可比迭代公式voidJacobi(vector<vector<double>>A,vector<double>B,intn){vector<double>X(n,0);vector<double>Y(n,0);vector<double>D(n,0);intk=0;//记录循环次数do{X=Y;for(inti=0;i<n;i++){doubletem=0;for(intj=0;j<n;j++){if(i!=j)tem+=A[i][j]*X[j];}Y[i]=(B[i]-tem)/A[i][i];cout<<left<<setw(8)<<Y[i]<<"";}cout<<endl;k++;if(k>100){cout<<"迭代失败!(可能是函数不收敛)"<<endl;return;}for(inta=0;a<n;a++){D[a]=X[a]-Y[a];}}while(MaxOfList(D)>0.00001||MaxOfList(D)<-0.00001);return;}intmain(){intn;cout<<"请输入方程组未知数的个数n:";cin>>n;cout<<endl;vector<vector<double>>A(n,vector<double>(n,0));vector<double>B(n,0);cout<<"请输入方程组的系数矩阵:"<<endl;for(inti=0;i<n;i++){for(intj=0;j<n;j++){cin>>A[i][j];}}cout<<endl;cout<<"请输入方程组的值向量:"<<endl;for(intk=0;k<n;k++){cin>>B[k];}cout<<endl;cout<<"您输入的方程组为:"<<endl;for(inta=0;a<n;a++){for(intb=0;b<n;b++){cout<<A[a][b]<<"";}cout<<""<<B[a]<<endl;}cout<<endl;cout<<"由雅可比迭代公式求的方程组的解为:"<<endl;Jacobi(A,B,n);return0;}