title: How to create public array accessible by all methods, but have user input determine the size of it?
body: <p>I have multiple arrays whose sizes need to be determined by the user input. These arrays should be accessible in the main method as well as the stepTwo() method. However, I am stuck. The user input doesn't come until the main method, but if I declare the arrays in the main method, then I can't access the arrays in the stepTwo() method. I would prefer not to pass the arrays as parameters to stepTwo() as I tried that before but came up with multiple errors. Any suggestions? See below for complete code:</p>
  
  <pre><code>    public class AssignmentIII
      {       
      public static int numProcesses; // Represents the number of processes
      public static int numResources; // Represents the number of different types of resources
  
      public static int[] available = new int[numResources]; // Create an emptry matrix for available processes
      public static int[][] allocation = new int[numProcesses][numResources]; // Create an empty allocation matrix nxm
      public static int[][] request = new int[numProcesses][numResources]; // Create an empty request matrix nxm
      public static int[] work = new int[numResources]; // Create an empty work matrix
      public static Boolean[] finish = new Boolean[numProcesses]; // Create an empty finish matrix
  
      public static void main(String[] args) throws FileNotFoundException
      {
          try
          {
              Scanner scan = new Scanner(System.in);
              Scanner fileScan = new Scanner(new File("input1.txt")); // Create file scanner
  
              System.out.println("Please enter the total number of processes: ");
              numProcesses = scan.nextInt();
              System.out.println("Please enter the number of different types of resources: ");
              numResources = scan.nextInt();
  
              // Initialize the available matrix
              for(int i = 0; i &lt; numResources; i++)
              available[i]=fileScan.nextInt();
  
              // Initialize the allocation matrix
              for(int j = 0; j &lt; numProcesses; j++)
                  for(int k = 0; k &lt; numResources; k++)
                      allocation[j][k]=fileScan.nextInt();
  
              // Initialize the request matrix
              for(int m = 0; m &lt; numProcesses; m++)
                  for(int n = 0; n &lt; numResources; n++)
                      request[m][n]=fileScan.nextInt();
  
              // Print allocation matrix
              System.out.println();
              System.out.println("Allocated");
              for(int i = 0; i &lt; numResources; i++)
              {
                  System.out.print("\tR" + i);
              }
              System.out.println();
              for(int j = 0; j &lt; numProcesses; j++)
              {
                  System.out.print("P" + j);
                  for(int k = 0; k &lt; numResources; k++)
                  {
                      System.out.print("\t" + allocation[j][k]);
                  }
                  System.out.println();
              }
  
              // Print available matrix
              System.out.println();
              System.out.println("Available");
              for(int i = 0; i &lt; numResources; i++)
              {
                  System.out.print("R" + i + "\t");
              }
              System.out.println();
              for(int i = 0; i &lt; numResources; i++)
                  System.out.print(available[i] + "\t");
              System.out.println();
  
  
              // Print request matrix
              System.out.println();
              System.out.println("Requested");
              for(int i = 0; i &lt; numResources; i++)
                  {
                      System.out.print("\tR" + i);
                  }
              System.out.println();
  
              for(int m = 0; m &lt; numProcesses; m++)
              {
                  System.out.print("P" + m);
                  for(int n = 0; n &lt; numResources; n++)
                  {
                      System.out.print("\t" + request[m][n]);
                  }
                  System.out.println();
              }
              System.out.println();
  
              // Begin deadlock detection algorithm               
              for(int i = 0; i &lt; numResources; i++) // Intialize Work := Available
                  work[i]=available[i];
  
              for(int j = 0; j &lt; numProcesses; j++) // Check for Allocation != 0 and initialize Finish accordingly
              {
                  int sumAllocation = 0;
                  for(int i = 0; i &lt; numResources; i++)
                  {
                      sumAllocation += allocation[j][i];
                  }
  
                  if (sumAllocation != 0)
                      finish[j] = false;
                  else finish[j] = true;
              }
  
              stepTwo();
  
              }
              catch(FileNotFoundException ex)
              {
              System.out.println("An error has occured. The file cannot be found.");
              }
      }
  
      public static void stepTwo()
      {
          // Step 2
          // Find an index i where Finish[i] = false &amp; Request[i] &lt;= Work         
          for(int i = 0; i &lt; numProcesses; i++)
          {
              int sumRequests = 0;
              int sumWork = 0;
  
              // Sum the Request and Work vectors
              for(int k = 0; k &lt; numResources; k++)
              {   
                  sumRequests += request[i][k];
                  sumWork += work[k];
              }
  
              if (finish[i] == false &amp;&amp; sumRequests &lt;= sumWork)
              {
                  finish[i] = true;
                  for(int m = 0; m &lt; numResources; m++)
                  {
                      work[m] = work[m] + allocation[i][m];
                  }
  
                  stepTwo();
              }
              else if (finish[i] == false)
              // Step 4: Print which processes are in a deadlock state
              // Print using P0, P1, ... , Pn format
                  System.out.println("P" + i + " is in a deadlock state.");                           
          }
      }
   }
  </code></pre>