我有一个静态矩阵结果和静态矩阵添加方法以及一个静态矩阵显示(用于打印结果),我在主函数中编写了一个测试示例。
我的目标是:我想用这两种静态方法乘和加两个矩阵。
我得到这些错误"变量C和d可能没有被初始化"。有人能告诉我,问题是什么吗?
public class Matrixmultadd {
static double[][] matrixMult(double[][] A,double[][] B) {
double[][] C; //declar this variable for return the result
//return null if on of matrix are null
if(A == null || B == null){
return null;
}
if(A[1].length == B.length){ //check to be equal columns of A with rows of B
for(int n = 0;n < A.length;n++){//n is numbers of rows of A
for(int k = 0;k < B[n].length;k++){
C[n][k] = 0.0;
for(int l = 0;l < A[n].length;l++){//row n of A multiple in column k of B
C[n][k] += A[n][l] * B[l][k];
}
}
}
return C;
} else {
return null;
}
}
static double[][] matrixAdd(double[][] a,double[][] b) {
//check the rows and columns of a and b are equal
if(a.length == b.length && a[1].length == b[1].length){
double[][] d; //declar this variable for return the result
for(int n = 0;n < b.length;n++){
for(int m = 0;m < b[1].length;m++){
d[n][m] = a[n][m] + b[n][m];
}
}
return d;
}else {
return null;
}
}
static void matrixDisplay(double[][] a){
for(int i = 0; i < a.length;i++){
for(int k = 0;k < a[1].length;k++){
System.out.print(a[i][k] + "\t");
}
System.out.println();
}
}
public static void main(String[] args){
double[][] A = {{1,2,3},{4,5,6}};
double[][] B= {{1,2},{3,4},{5,6}};
double[][] d;
d = matrixMult(A,B);
matrixDisplay(d);
}
}
由于在matrixMult
方法中有条件语句,因此可能永远不会满足该条件。那么你的声明呢
double[][] C;
可能永远不会初始化,这将导致错误
return C;
因此,您可以通过初始化它来修复它。
double[][] C = new double[length][length]; // your actual dimensions
此外,if语句中缺少C
数组的分配语句。不能为未初始化的数组赋值。
您应该在使用变量C和d之前初始化它们,因为Java将数组视为对象,并且它们是在堆内存中分配的。
double[]C=新的双精度[A.length][B[1]。长度]
double[]d=新的双精度[a.length][b[1]。长度]
你必须初始化那些变量。在你的情况下,它会是这样的:
对于C-双[][]C=新的双[A。长度][B。长度];
对于d双精度[][]d=新双精度[a.length][b.length];
static double[][] matrixMult(double[][] A,double[][] B) {
double[][] C = new double[A.length][B.length]; //declar this variable for return the result
//return null if on of matrix are null
if(A == null || B == null){
return null;
}
if(A[1].length == B.length){ //check to be equal columns of A with rows of B
for(int n = 0;n < A.length;n++){//n is numbers of rows of A
for(int k = 0;k < B[n].length;k++){
C[n][k] = 0.0;
for(int l = 0;l < A[n].length;l++){//row n of A multiple in column k of B
C[n][k] += A[n][l] * B[l][k];
}
}
}
return C;
} else {
return null;
}
}
static double[][] matrixAdd(double[][] a,double[][] b) {
double[][] d = new double[a.length][b.length]; //declar this variable for return the result
//check the rows and columns of a and b are equal
if(a.length == b.length && a[1].length == b[1].length){
for(int n = 0;n < b.length;n++){
for(int m = 0;m < b[1].length;m++){
d[n][m] = a[n][m] + b[n][m];
}
}
return d;
}else {
return null;
}
}
static void matrixDisplay(double[][] a){
for(int i = 0; i < a.length;i++){
for(int k = 0;k < a[1].length;k++){
System.out.print(a[i][k] + "\t");
}
System.out.println();
}
}
public static void main(String[] args){
double[][] A = {{1,2,3},{4,5,6}};
double[][] B= {{1,2},{3,4},{5,6}};
double[][] d;
d = matrixMult(A,B);
matrixDisplay(d);
}
}
问题内容: 我得到错误: TestCounter.java:115:变量计数器可能尚未初始化counters [i] = new Counter(i); 而且我不知道如何解决它。我知道我的课程“” 有效。下面是我的代码,如果您可以看一下,我将非常高兴。此代码包装在类的main方法中。 问题答案: 您尚未创建数组,只是声明了变量。 您需要这样做: 或类似的东西
我创建了包含构造函数和toString方法的类主管。但是,当我试图打印数组的索引时,出现了一个错误,“变量svArray可能尚未初始化。我该如何解决这个问题?”?
问题内容: 我有一个方法创建一个,另一个方法更改字符串 我的编译器说它“可能尚未初始化”。 有人可以解释吗? 问题答案: 变量可能尚未初始化 在内部定义方法时,必须在其中初始化程序的每个变量中必须先使用一个值的地方。 同样重要的是,您的代码将永远无法正常运行,因为Java中的字符串是不可变的,因此您无法编辑字符串,因此应更改方法。 我将您的代码更改为类似的内容,但是我认为您的编辑方法应该做另一件事
所以我已经在结果中声明了相关字符串的值,但是它仍然说我的变量“result”可能还没有初始化。 我正在尝试实现与此类似的输出。任何人都可以帮我吗?谢谢!
我正在研究Euler Problem 9项目,其中说明: 毕达哥拉斯三元组是由三个自然数组成的集合 例如,3^2 4^2=9 16=25=52。 确实存在一个毕达哥拉斯三重态,其bc=1000。查找产品abc。 以下是我到目前为止所做的: 当我运行代码时,会出现以下错误: 注意:我的每个变量(a、b和c)都有不同的行号。 我想当我声明a、b和c为整数时,如果不赋值,默认值是0。 即使不是这样,在我
在最后一行显示为时出错 :::: 变量结果可能尚未初始化 这是我的代码: