Java 1'的随机数组;s和0';使用方法

Java 1'的随机数组;s和0';使用方法,java,methods,random,Java,Methods,Random,我正在尝试创建一个随机大小的1和0数组。我可以让程序运行和编译,如果我删除它的随机方面,并手动输入数组的大小。由于某种原因,当我引入随机实用程序时,我无法让程序编译 mport java.util.Random public class Project1a { int[][] sample={{0,0,1,1,1}, {1,1,0,1,1}, {1,1,1,0,1},

我正在尝试创建一个随机大小的1和0数组。我可以让程序运行和编译,如果我删除它的随机方面,并手动输入数组的大小。由于某种原因,当我引入随机实用程序时,我无法让程序编译

mport java.util.Random

public class Project1a {

    int[][] sample={{0,0,1,1,1},
                          {1,1,0,1,1},
                          {1,1,1,0,1},
                          {0,1,0,1,1}};

     int box[][];

    Random randomNumbers = new Random();


     int m = randomNumbers.nextInt(100);
     int n = randomNumbers.nextInt(100);


     int results[][] = new int [m][n];
     int goodData = 1;

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

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

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

    int analyzeCell(int row, int col) {
      int xCol = col;   
      int runCount = 0;  
      int rowLen = sample[row].length;   
      int hereData = sample[row][xCol]; 
      while (hereData ==  goodData && xCol < rowLen) {
         runCount++;
         xCol++;
         if (xCol < rowLen) { hereData = sample[row][xCol];} 
      }
      return runCount;
   }

  public  void printTable(int[][] aTable ) {
    for (int[] row : aTable) {
      printRow(row);
      System.out.println();
    }
  }
  public void printRow(int[] aRow) {
    for (int cell  : aRow) {
      System.out.printf("%d ", cell);
    }
  }

}
公共类项目1a{
int[]sample={{0,0,1,1,1},
{1,1,0,1,1},
{1,1,1,0,1},
{0,1,0,1,1}};
整数框[];
随机数=新随机数();
int m=随机数。nextInt(100);
int n=随机数。nextInt(100);
整数结果[][]=新整数[m][n];
int goodData=1;
公共静态void main(字符串[]args){
可分析的();
打印表(结果);
}
可分析的公共空间(){
int行=0;
while(行<样本长度){
W(世界其他地区);
行++;
}
}
公共无效分析零W(整数行){
int xCol=0;
int rCount=0;
while(xCol
您的类名与
java.util.Random
冲突。重命名类是这里最容易解决的问题。

问题是您在块中声明实例变量,从而使其在方法中可访问

检查此项:从此处删除大括号{}以及访问
结果的方式
好数据
您需要声明它们
静态

    { // remove this
Random randomNumbers = new Random();


int m = randomNumbers.nextInt(100);
int n = randomNumbers.nextInt(100);


 static int results = new int [m][n];   
 static int goodData = 1;
} // remove this

另一种方法是编写
java.util.Random randomNumbers=new java.util.Random()最好不要创建名称与
java.util.*
java.lang.*
相同的类。这会让人困惑。当有人看到
Random
String
List
或类似的常见名称时,他们会认为这是JDK类。除了类名冲突之外,似乎还有其他问题。我重命名了该类,现在出现以下错误:找不到第22行的符号结果,29,45和goodData行55yeah bcoz相同,这些变量在该块之外是不可访问的参见我的答案已提供详细信息我修复了所有这些,现在我得到:非静态方法不能从静态上下文引用。但是如果从main中删除static,我得到的main方法在类中是static错误没有您没有全部更改,请检查我在那里提到的答案,以声明
结果
goodData
为static