2013-10-26 5 views
-1

Я пытаюсь создать массив случайных размеров из 1 и 0. Я могу заставить программу запускать и компилировать, если я удалю случайный аспект ее и введите размер массива вручную. По какой-то причине, когда я ввожу случайную утилиту, я не могу заставить программу компилироваться.Случайный массив методов использования 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); 
    } 
    } 

} 
+0

я переименовал класс и теперь я получаю следующие ошибки: не удается найти результаты символьных строк 22, 29,45 и то же самое для goodData линии 55 – user2850714

+0

да bcoz эти переменные не являются доступный за пределами этого блока, см. мой ответ, предоставил подробную информацию – exexzian

+0

Я исправил все это, и теперь я получаю: нестационарный метод не может ссылаться на статический контекст. Но если удалить статический из основного, я получаю главный метод, статический в ошибке класса – user2850714

ответ

2

Ваше имя класса противоречит java.util.Random. Переименование вашего класса - самое легкое исправление.

+1

. Другой способ написать 'java.util.Random randomNumbers = new java.util.Random();' – BackSlash

+0

Это хорошая практика не создавать классы, имена которых совпадают с именами 'java.util. *' или 'java.lang. *' , Это смутит людей. Когда кто-то видит «Random», «String», «List» или похожие имена, они предполагают, что это класс JDK. – yshavit

+2

кажется, что есть и другая проблема, наряду с этим конфликтом класса – exexzian

0

проблемы вы объявляете переменный экземпляр в блоке, что делает его доступным в методах

проверить это: удалить фигурные скобки {} отсюда и то, как вы обращаетесь ваш results и goodData вам нужно объявить их 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 
Смежные вопросы