我将发布pseuducode,希望你能理解:
import java.util *。;
主要方法{
subemethod1();
submethod1() {
Screen input = new Scanner(System.in);
int buy = input.nextInt();
if( buy != 0) {
submethod2();
}
submethod2() {
Screen input = new Scanner(System.in);
int[][]grid = new int [5][6]
int row = input.nextInt();
int col = input.nextint();
grid[row][col] = 1;
我们假设我为行键入1,为此次键入1。然后grid[1][1] = 1
。我想保存grid[1][1]
的值,以便下次进入第2行,第2列时我会:
grid[1][1] = 1;
grid[2][2] = 1; and so on for whatever row-col combination I type.
最后我想返回submethod1,我希望submethod1理解grid [1] [1] = 1,而grid [2] [2]的值也是1;等等....
答案 0 :(得分:0)
这是一个范围问题。基本上,每次调用int[][]
时,您都会创建一个名为grid
的新submethod2()
变量。要么将其存储为类变量,要么将其传入然后从submethod2()
返回并自行手动更新(我不推荐这种方法)
如果没有更多上下文,很难建议如何将问题分解为objects,但有一个解决方案可能如下:
import java.util*.;
public class MainClass {
private int[][] grid;
public static void main(String[] args) {
submethod1();
}
private void submethod1() {
grid = new int[5][6];
Screen input = new Scanner(System.in);
int buy = input.nextInt();
if( buy != 0) {
submethod2();
}
}
private void submethod2() {
Screen input = new Scanner(System.in);
int row = input.nextInt();
int col = input.nextint();
grid[row][col] = 1;
}
}
答案 1 :(得分:0)
下面我假设您要求在程序实例中保存网格值,而不是在各种程序调用实例之间。如果你想在各种程序调用之间保存网格值,那么你必须在某些文件中存储网格值等。
而不是在submethod2()中创建数组网格,将其创建为类变量,将submethod1(),submethod2()创建为成员函数。
在main方法中创建一个对象,并在对象上调用submethod1()
类似
class ABC
{
int[][] grid = new int[5][6];
submethod1()
{
...
}
submethod2()
{
...
}
public static void main(String args[])
{
ABC abc = new ABC();
abc.submethod1();
}
}
答案 2 :(得分:0)
处理此类问题的最佳方法是使用面向对象的方法。请记住,这就是我们使用Java的原因。
创建一个类GridItem
,它将包含三个属性row
,column
,value
。当您存储一些值GridItem
的创建对象并将其存储在全局列表中时。然后,您可以在任何函数中迭代它并访问存储的值。
class GridItem
{
int row;
int column;
int value;
public GridItem(int row, int column, int value)
{
this.row = row;
this.column = column;
this.value = value;
}
//Provide getters only
}
ArrayList<GridItem>items = new ArrayList<GridItem>();
items.add(new GridItem(1, 1, 1));// 1 row 1 col 1 value
items.add(new GridItem(2, 2, 2));// 2 row 2 col 2 value
items.get(0).getRow()// get first
还有其他一些解决方案。例如,维护一个全局数组,然后展开它。创建网格列表等,但它们都很复杂,并且做的不仅仅是必要的。