该程序将编译但该表不会打印出来

时间:2013-10-28 23:31:59

标签: java arrays methods

该程序符合但我无法将结果表打印出来。该程序应该分析一个1和0的随机表,并打印出一个表,该表按顺序计算数字是1。表大小由用户创建的输入生成。这工作正常,但我无法打印结果表。我感谢不同类型的随机实用程序可能会起作用。

现在我得到一张满是零的桌子......

import java.util.Scanner;
import java.util.Random;

 public class Project1a {
    static int[][] results;   
    static int[][] sample;   

    static int goodData = 1;

    public static void main(String[] args) {   // main comes first (or last)
       scanInfo();
        analyzeTable();
       printTable(results);

    }


  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();
       Random randomNumbers = new Random();
       sample = new int[rows= randomNumbers.nextInt(50)][columns = randomNumbers.nextInt(50)]; 
       results = new int[rows][columns];


    }



    static void analyzeTable() {   // no argument.  static var sample is assumed
       int row=0;
       while (row < sample.length) {
          analyzeRow(row);
          row++;
       }
    }
    static void analyzeRow(int row) {   // assume sample is "global"
       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;  
       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 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);
     }
   }
 }

1 个答案:

答案 0 :(得分:1)

你的问题就在这一行。

sample = new int[rows= randomNumbers.nextInt(1)][columns = randomNumbers.nextInt(2)];

您看,nextInt(1)将始终返回0,因此您将rows设置为零,最终会得到几个没有行的数组。

来自nextInt的Javadoc -

  

public int nextInt(int n)

     

统一返回伪随机数   在0(包括)和指定值之间分配int值   (独占),从这个随机数生成器的序列中提取。