java - 如何使用 setter 方法更改矩阵(二维数组)中的元素?
问题描述
我正在尝试用 Java 制作我的个人数独生成器,但我对矩阵的 setter element 方法有疑问。
字段类:
public void setField(int [][] field){
this.field = Arrays.copyOf(field, field.length);
}
public int[][] getField() {
return Arrays.copyOf(field, field.length);
}
//Change the element of the field
public void setElement (int i, int j, int n) {
getField()[i][j] = n;
setField(getField());
}
主要的:
// First Print
for (i = 0; i < field.getField().length; i++) {
System.out.println();
for (j = 0; j < field.getField()[i].length; j++)
System.out.print(field.getField()[i][j]);
}
System.out.println();
System.out.println("Select Row");
i = input.nextInt();
System.out.println("Select Column");
j = input.nextInt();
System.out.println("Put Number");
n = input.nextInt();
field.setElement(i,j,n);
// Second Print
for (i = 0; i < field.getField().length; i++){
System.out.println();
for (j = 0; j < field.getField()[i].length; j++)
System.out.print( field.getField()[i][j]);
}
我不知道为什么第二个打印与第一个相同。
解决方案
您正在setField
和getField
方法中创建矩阵的副本
public void setField(int [][] field){
this.field = Arrays.copyOf(field, field.length);
}
public int[][] getField() {
return Arrays.copyOf(field, field.length);
}
在你的方法中这样做setElement
:
- 获取原始矩阵的副本。
- 更改副本的元素
- 设置原始矩阵的副本
在这里,您的代码带有解释每个步骤的注释:
public void setElement (int i, int j, int n) {
// 1 - Get a copy of the original matrix
getField()
// 2 - Change an element of the copy
[i][j] = n;
// 3.a - get a copy of the original matrix
// 3.b - Set the copy
setField(getField());
}
所以最终效果不会改变原始矩阵。
您可以通过以下方式获得所需的结果:
public void setField(int [][] field){
this.field = field;
}
public int[][] getField() {
return field;
}
//Change the element of the field
public void setElement (int i, int j, int n) {
field[i][j] = n;
}
推荐阅读
- java - 修改 JTree 节点外观
- caching - Spring Data Redis 作为 Spring MVC 的缓存管理器,spring security 身份验证失败
- scala - 如何在 Scala 单元测试中创建临时目录
- r - 数据框列到另外两列的矩阵
- express - 如何在 Express.js 应用程序中将业务逻辑与控制器分离
- excel - 存在内容时无法修复长度问题
- html - 如何将 2 个(或更多)“visio 网站”(*.htm)与子页面合并?
- sql-server-2014 - SQL Server:将多条记录合并到一个字段中
- shopify - 显示一组包含具有特定标签的产品的集合
- c# - NSubstitute 模拟没有输出/引用参数的 void 方法