0

如何将设置大小的数组更改为用户选择的随机大小的数组。

这是我设置大小数组的方法。我只是不知道如何转换为随机大小....

    import java.util.Scanner;

public class Project1a {

 public static void scanInfo()
 {

 Scanner input = new Scanner(System.in);

System.out.println("Enter number of rows: ");    
int rows = input.nextInt();

System.out.println("Enter number of columns: "); 
int columns = input.nextInt();

int[][] nums = new int[rows][columns];            

 static int[][] sample = nums;

}
   static int[][] results = new int[4][5];
   static int goodData = 1;

   public static void main(String[] args) {
      analyzeTable();
      printTable(results);
   } 

   static void analyzeTable() {
      int row=0;
      while (row < sample.length) {
         analyzeRow(row);
         row++;
      }
   }

   static void analyzeRow(int row) {
      int xCol = 0;
      int rCount = 0;
      while (xCol < sample[row].length) {
         rCount = analyzeCell(row,xCol);
         results[row][xCol] = rCount; // instead of print
         xCol++;
      }
   }

   static int analyzeCell(int row, int col) {
      int xCol = col;   // varies in the loop
      int runCount = 0;  // initialize counter
      int rowLen = sample[row].length;   // shorthand
      int hereData = sample[row][xCol];  // shorthand
      while (hereData == goodData && xCol < rowLen) {
         runCount++;
         xCol++;
         if (xCol < rowLen) { hereData = sample[row][xCol];} 
      }
      return runCount;
   }

  /*   Start Print Stuff */
  public static void printTable(int[][] aTable ) {
    for (int[] row : aTable) {
      printRow(row);
      System.out.println();
    }
  }
  public static void printRow(int[] aRow) {
    for (int cell  : aRow) {
      System.out.printf("%d ", cell);
    }
  }
}
  /*   End Print Stuff */

我现在在第 18 行只收到一个错误:表达式的非法开始。我认为我没有正确定义变量。

4

3 回答 3

0

您可以重新编写代码以使用ArrayList's:

import java.util.ArrayList;

//Here you create an 'array' that will contain 'arrays' of int values
ArrayList<ArrayList<Integer>> sample = new ArrayList<ArrayList<Integer>>();

然后添加每一行:

sample.add(new ArrayList<Integer>());

并将一个元素添加到一行:

sample.get(0).add(5); // get(0) because is the first row, and 5 is int

当然,您必须修改代码才能使用这种数组。

于 2013-10-27T01:33:53.503 回答
0

您无法在 Java 中更改数组大小,尽管在使用多维数组时会变得复杂。我建议您熟悉Java Array 文档

您可以做的是创建一个所需大小的新数组,然后将旧数组中的数据复制到新数组中。

于 2013-10-27T01:34:16.457 回答
0
Scanner input = new Scanner(System.in);

System.out.println("Enter number of rows: ");     // get number of rows
int rows = input.nextInt();

System.out.println("Enter number of columns: ");  // get number of columns
int columns = input.nextInt();;

int[][] nums = new int[rows][columns];            // new 2D array, randomly 
                                                  // sized by user input

这就是你要找的全部吗?根据你的问题,这就是它的样子

1如果你想要一个方法用随机's 和's填充它0,就这样做

static void populate(int[][] nums) {
    for (int i = 0; i < row.length; i++) {
        for (int j = 0; j < column.length; i++) {
            nums[row][column] = (int)(Math.random() + 1);
        }
    }
}

现在num是一个带有随机1's 和0's的二维矩阵

于 2013-10-27T01:36:13.360 回答