【问题标题】:Random array of 1's and 0's using methods使用方法的 1 和 0 的随机数组
【发布时间】:2013-10-26 22:27:12
【问题描述】:

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

导入 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);
    }
  }

}

【问题讨论】:

  • 我重命名了这个类,现在我得到了以下错误:找不到第 22、29,45 行的符号结果和 goodData 第 55 行的相同
  • 是的,因为这些变量在该块之外无法访问,请参阅我的答案提供了详细信息
  • 我修复了所有这些,现在我得到:不能从静态上下文引用非静态方法。但是,如果从主中删除静态,我会得到主方法在类错误中是静态的
  • 不,您还没有全部更改,请检查我在此处提到的将resultsgoodData 声明为静态的答案

标签: java methods random


【解决方案1】:

您的班级名称与java.util.Random 冲突。重命名您的班级是这里最简单的解决方法。

【讨论】:

  • 另一种方式是写java.util.Random randomNumbers = new java.util.Random();
  • 最好不要创建名称与java.util.*java.lang.* 相同的类。会迷惑人的。当有人看到RandomStringList 或类似的常用名称时,他们会认为它是 JDK 类。
  • 除了类名冲突之外,似乎还有其他问题
【解决方案2】:

问题是你在一个块中声明你的实例变量,这使得它在方法中不可访问

检查这一点:从这里删除花括号 {} 以及您访问 resultsgoodData 的方式,您需要声明它们 static

    { // 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

【讨论】:

    猜你喜欢
    • 2015-01-08
    • 2014-03-02
    • 1970-01-01
    • 2015-02-27
    • 2012-11-21
    • 2012-06-22
    • 2014-03-01
    • 1970-01-01
    相关资源
    最近更新 更多