在方法中保存数组的值

时间:2012-09-26 11:18:33

标签: java arrays methods

我将发布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;等等....

3 个答案:

答案 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,它将包含三个属性rowcolumnvalue。当您存储一些值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 

还有其他一些解决方案。例如,维护一个全局数组,然后展开它。创建网格列表等,但它们都很复杂,并且做的不仅仅是必要的。