2016-01-07 6 views
1

Как получить доступ к массиву из другого класса? У меня 3 класса; Main (где я хочу получить доступ к массиву) FramePanel (мой графический интерфейс и откуда берется значение UserInputNum) и StoryArray (где мой массив сохраняется).Вызов массива из другого класса - Java

Мне нужно получить доступ к массиву в вложенном цикле If в классе Main, потому что я хочу также сохранить данные конкретного массива в строку и в конечном итоге добавить его в JTextArea.

Вот два класса необходимы:

Main.java

public class Main 
{ 
    public static String UserInput; 
    public static int UserInputNum; 

    public static void main(String[] args) 
    { 
     FramePanel.main(); 
     StoryArray.main(); 

     UserInputNum = Integer.parseInt(UserInput); 
     if (UserInputNum >= 0) 
     { 
      if (UserInputNum <= 399) 
      { 
       StoryArray.storyLine[UserInputNum]; 
      } 
      else 
      { 

      } 
     } 
     else 
     { 

     } 
    } 
} 

StoryArray.java

public class StoryArray 
{ 
    public static String storyLine[] = null ; 
    public String[] getStoryLine() 
    { 
     return storyLine; 
    } 
    public static void main() 
    { 
     //String[] storyLine; 
     storyLine = new String[399]; 
     storyLine[0] ("1") 
     storyLine[1] ("2") 
     storyLine[2] ("3") 
     storyLine[3] ("4") 
     storyLine[4] ("5") 
     storyLine[5] ("6") 
+2

'StoryArray.storyLine' + класс' Main', не 'main' ... –

+0

Я добавил в том, как я думаю это должно быть, но я все еще получаю синтаксическую ошибку, говоря «AssignmentOperatior Expression» для завершения выражения –

ответ

2

В другом классе можно назвать массив как это:

String value = StoryArray.storyLine[index]; 
1

Как это статический открытое поле вы можете получить доступ к нему непосредственно StoryArray.storyLine. Но поскольку у вас есть метод getter, я бы предложил сделать этот сеттер getter статичным и поле массива частным и получить доступ к нему с помощью метода getter: StoryArray.getStoryLine() (чтобы узнать, почему читайте об инкапсуляции).

Вы также не должны начинать (главное) имени вашего класса из нижнего регистра, являются стандартными правилами кодирования для языка Java: http://www.oracle.com/technetwork/java/codeconvtoc-136057.html

+0

. Я попробовал StoryArray.getStoryLine (storyLine [UserInputNum]); но он возвращает ошибку, говорящую, что storyLine не может быть разрешено переменной, что это значит? извините, я пробовал использовать геттеры, поэтому есть один, но все, что я пытаюсь вернуть ошибку, я хочу, чтобы использовать UserInputNum в качестве номера ячейки в массиве - Спасибо, –

1

После того, как вы назвали StoryArray.main(), то вы должны быть в состоянии сделать StoryArray.storyLine[/*element id*/] = "whatever you want" к получить или установить любой элемент в storyLine. Кроме того, вы не определяете значения массива по умолчанию. В StoryArray.main() вам нужно иметь строки вида storyLine[n] = "n".

Смежные вопросы