帮我看看下面这个Java程序错在哪里?
我是Java初学者帮我看看下面这个Java程序错在哪里?我认为输出结果应该是:10203040但程序实际运行出来却是:50607080还往高手指点迷津(下面附上程序主体)...
我是Java初学者
帮我看看下面这个Java程序错在哪里?
我认为输出结果应该是:
10 20
30 40
但程序实际运行出来却是:
50 60
70 80
还往高手指点迷津(下面附上程序主体)
`
程序主题〔总共“Main.java”与“SquareMatrix.java”两个文件〕
〔1〕“Main.java”文件:
//主程序(Main)类型
public class Main {
public static void main(String argu[]) {
Main Mn=new Main();
Mn.test();
}
public void test() {
a=new SquareMatrix(2);
b=new SquareMatrix(2);
a=b;
a.savein(10, 0, 0); a.savein(20, 0, 1);
a.savein(30, 1, 0); a.savein(40, 1, 1);
b.savein(50, 0, 0); b.savein(60, 0, 1);
b.savein(70, 1, 0); b.savein(80, 1, 1);
for(int i=0; i<=1; i++) //输出自定义类型(方形矩阵)a
for(int j=0; j<=1; j++) {
System.out.print(a.get(i,j));
if(j<1) //如果该行尚未循环到末尾,则:
System.out.print("\t"); //跳到下一个TAB位
else System.out.println(""); //否则:换行
}
}
//定义a、b变量为“自定义类型”:SquareMatrix(方形矩阵)
private SquareMatrix a, b;
}
〔2〕“SquareMatrix.java”文件:
//方形矩阵(SquareMatrix)类型
public class SquareMatrix {
public SquareMatrix(int n) { //创建方形矩阵,传入行/列数n,并将所有元素初值赋为0
this.n=n;
element=new int[n][n];
for(int i=0; i<=n-1; i++)
for(int j=0; j<=n-1; j++)
element[i][j]=0;
}
public int getlong() { //将方阵的行/列数读出,即读出长度(getlong)
return n;
}
//将传入的数(Number)存入(savein)方阵中的第r+1行、第c+1行
public void savein(int Number, int r, int c) {
element[r][c]=Number;
}
//将方阵中第r+1行、第c+1行的元素读出(get)
public int get(int r, int c) {
return element[r][c];
}
private int[][] element; //定义二位数组,以储存方阵内所有元素(element)
private int n; //定义变量n,以储存方阵的行/列数
}
`
〔1〕这个程序的名字叫做“自定义类型赋值测试”
(2)本来我的程序代码是有缩进格式的,但一发到baidu上来就没了。很抱歉。
〔3〕该程序没有“语法错误”,只有“逻辑错误”
回复 kelongxhu :
你所提到的地方,也正是我所不解的地方。
按照程序的先后,是先有b赋值给a,
再有[[10,20],[30,40]]赋值给a与[[50,60],[70,80]]赋值给b
所以,前面的赋值对后面应该不影响才对。
难道“自定义类型”的赋值和“整型”、“字符型”的赋值不一样?
` 展开
帮我看看下面这个Java程序错在哪里?
我认为输出结果应该是:
10 20
30 40
但程序实际运行出来却是:
50 60
70 80
还往高手指点迷津(下面附上程序主体)
`
程序主题〔总共“Main.java”与“SquareMatrix.java”两个文件〕
〔1〕“Main.java”文件:
//主程序(Main)类型
public class Main {
public static void main(String argu[]) {
Main Mn=new Main();
Mn.test();
}
public void test() {
a=new SquareMatrix(2);
b=new SquareMatrix(2);
a=b;
a.savein(10, 0, 0); a.savein(20, 0, 1);
a.savein(30, 1, 0); a.savein(40, 1, 1);
b.savein(50, 0, 0); b.savein(60, 0, 1);
b.savein(70, 1, 0); b.savein(80, 1, 1);
for(int i=0; i<=1; i++) //输出自定义类型(方形矩阵)a
for(int j=0; j<=1; j++) {
System.out.print(a.get(i,j));
if(j<1) //如果该行尚未循环到末尾,则:
System.out.print("\t"); //跳到下一个TAB位
else System.out.println(""); //否则:换行
}
}
//定义a、b变量为“自定义类型”:SquareMatrix(方形矩阵)
private SquareMatrix a, b;
}
〔2〕“SquareMatrix.java”文件:
//方形矩阵(SquareMatrix)类型
public class SquareMatrix {
public SquareMatrix(int n) { //创建方形矩阵,传入行/列数n,并将所有元素初值赋为0
this.n=n;
element=new int[n][n];
for(int i=0; i<=n-1; i++)
for(int j=0; j<=n-1; j++)
element[i][j]=0;
}
public int getlong() { //将方阵的行/列数读出,即读出长度(getlong)
return n;
}
//将传入的数(Number)存入(savein)方阵中的第r+1行、第c+1行
public void savein(int Number, int r, int c) {
element[r][c]=Number;
}
//将方阵中第r+1行、第c+1行的元素读出(get)
public int get(int r, int c) {
return element[r][c];
}
private int[][] element; //定义二位数组,以储存方阵内所有元素(element)
private int n; //定义变量n,以储存方阵的行/列数
}
`
〔1〕这个程序的名字叫做“自定义类型赋值测试”
(2)本来我的程序代码是有缩进格式的,但一发到baidu上来就没了。很抱歉。
〔3〕该程序没有“语法错误”,只有“逻辑错误”
回复 kelongxhu :
你所提到的地方,也正是我所不解的地方。
按照程序的先后,是先有b赋值给a,
再有[[10,20],[30,40]]赋值给a与[[50,60],[70,80]]赋值给b
所以,前面的赋值对后面应该不影响才对。
难道“自定义类型”的赋值和“整型”、“字符型”的赋值不一样?
` 展开
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询