2013-11-26 6 views
-2

Если у меня есть конструктор, содержащий переменную. Как я могу вызвать эту переменную в другом методе внутри одного класса?Вызов переменной из конструктора в другом методе в java

В моем примере ниже, я хочу, чтобы код возвращал false в методе checkBoundaries, если col больше, чем Columnnum, который находится в конструкторе.

import java.util.Arrays; 
    class MovieSeating 
    { 
     private String[][] Seats; 

     public MovieSeating(int rowNum, int columnNum) 
     { 
      Seats = new String[rowNum][columnNum]; 
      for (int r = 0; r < rowNum; r++) 
      { 
       for (int c = 0; c < columnNum; c++) 
       { 
        Seats[r][c] = "?.?"; 
        System.out.print(Seats[r][c] + " "); 
       } 
       System.out.println("\n"); 
      } 

      System.out.println("Seating is empty."); 



     } 

     public boolean checkBoundaries(int row, int col) 
     { 
      if (col < 0 || row < 0 || col >= columnNumInConstructorParameter) 
      { 
       return false; 
      } 
      else { 
       return true; 
      } 
     } 
+0

Вы имеете в виду конструктор с параметром? – Math

+0

Ваш вопрос не имеет смысла. –

+0

Хорошо позвольте мне перефразировать в оригинале .. извините – Ryan

ответ

1

Сделайте свои переменные в частных экземплярах и вызовите их.

ex.

public class Foo { 

    private int myVariable = 0; 

    public Foo(int myVariable) { 
     this.myVariable = myVariable; 
    } 

    public boolean positiveValue() { 
     return this.myVariable > 0; 
    } 

} 
0

Просто передайте его по параметрам

public Classname(){ 
    String foo = "bar";   
    myMethod(foo); 
} 
public void myMethod(String parameter){ 
    //do something 
} 
2

Вы можете использовать:

if (col < 0 || row < 0 || col >= Seats[0].length) 

В общем, если вы хотите использовать переменную внутри метода, он должен быть установлен как переменная экземпляра.

+0

отлично, спасибо – Ryan

1
class MovieSeating 
{ 
    private String[][] Seats; 
    private int rowNumber = 0; 
    private int columnNumber = 0; 

    public MovieSeating(int rowNum, int columnNum) 
    { 
     this.rowNumber = rowNum; 
     this.columnNumber = columnNum; 
     Seats = new String[rowNum][columnNum]; 
     for (int r = 0; r < rowNum; r++) 
     { 
      for (int c = 0; c < columnNum; c++) 
      { 
       Seats[r][c] = "?.?"; 
       System.out.print(Seats[r][c] + " "); 
      } 
      System.out.println("\n"); 
     } 

     System.out.println("Seating is empty."); 



    } 

    public boolean checkBoundaries(int row, int col) 
    { 
     if (col < 0 || row < 0 || row >= rowNumber || col >= columnNumber) 
     { 
      return false; 
     } 
     else { 
      return true; 
     } 
    } 
} 
0

Всегда лучше сохранять параметры конструктора в переменных экземпляра.

0

Может быть полезно хранить int rowNum, int columnNum в качестве переменной экземпляра. Однако они доступны из размера String [] [] Сидения переменной

Попробуйте добавить что-то вроде:

private int getColumnNum() throws ArrayIndexOutOfBoundsException , NullPointerException{ 
    return Seats[0].length; 
} 
private int getRowNum(){ 
    return Seats.length; 
} 
Смежные вопросы