2015-11-17 3 views
-2

У меня возникли трудности с передачей массивов между методами, мне удалось установить их все в false с boolean и вернуть массив в основное. Однако оттуда я не знаю, как передать его другому методу, а затем отобразить true массив boolean как «да» или boolean ложный массив как «нет». Мой код выглядит следующим образом:Передача массивов между методами

import javax.swing.*; 
class methodarrays 
{ 
    public static void main (String[]param) 
    { 
     arrays(); 
     seen(); 
     display(); 
    } 

    public static boolean[] arrays() 
    { 
     boolean [] birds = new boolean [5]; 
     for (int i=0;i<birds.length;i++) 
     { 
      birds[i]=false; 
     } 
     return birds; 
    } 
    public static boolean seen() 
    { 
     String quit = "100"; 
     String ans = ""; 
     while(!ans.eqauls(quit)) 
     { 
      ans=JOptionPane.showInputDialog(null,"Which bird are you reporting? \n 1) Blue Tit 2) Blackbird 3)Robin 4)Wren 5)Greenfinch"); 
      if (ans.equals("1")) 
      { 
       birds[0] = true; 
       return birds[0]; 
      } 
      else if (ans.equals("2")) 
      { birds[1] = true; 
       return birds[1]; 
      } 
      else if (ans.equals("3")) 
      { 
       birds[2] = true; 
       return birds[2]; 
      } 
      else if (ans.equals("3")) 
      { 
       birds[2] = true; 
       return birds[2]; 
      } 
      else if (ans.equals("4")) 
      { 
       birds[3] = true; 
       return birds[3]; 
      } 
      else if (ans.equals("5")) 
      { 
       birds[4] = true; 
       return birds[4]; 
      } 
     } 
    } 

    public static void display() 
    { 
     JOptionPane.showMessageDialog(null,"Your Garden Watch results are:"); 
    } 

} 
+2

Вы должны изучить основы программирования OO, прежде чем задавать такие вопросы и читать руководства по теме «Как узнать Java» –

+0

на основе вашей реализации, всякий раз, когда вы вызываете массивы() метод, вы автоматически воссоздавать птица массив и повторно -изложите его содержимое на False. Я думаю, что на данном этапе трудно понять, в чем ваша цель. –

+0

@ E.Doroskevic Я пытаюсь изменить логические значения, если встречаются определенные символы. Я хочу, чтобы логический массив был одним из методов и передал его следующим методам. – duldi

ответ

1

Чтобы дать вам руку, начиная ... вы можете установить результат вашего метода arrays локальной переменной в методе main и передать в качестве аргумента seen. Затем вы можете сделать то же самое для метода display.

public static void main (String[]param) 
    { 
     boolean[] birds = arrays(); 
     seen(birds); 
     display(birds); 
    } 

    public static boolean[] arrays() 
    { 
    ... 
    } 
    public static boolean seen(boolean[] birds) 
    { 
    ... 

Существует множество учебных руководств по всему миру для такого рода вещей. Here является одним из примеров.

+0

Спасибо, я попробую это и дам вам знать, как я нахожусь – duldi

+0

Хотя мне пришлось внести несколько изменений, это в конечном итоге помогло мне приблизиться к пониманию проблемы, спасибо – duldi

1

Вам необходимо передать его в качестве параметра или объявить глобальный массив.

  1. Проходя мимо параметра:

класса methodarrays {

public static void main (String[]param) 
{ 
    boolean [] myArray =arrays(); 
    seen(myArray); 
    display(myArray); 
} 

public static boolean seen(boolean [] myArrayParam) 
{ 
    for (int i=0;i<myArrayParam.length;i++) 
    {...} 
} 

public static boolean display(boolean [] myArrayParam) 
{ 
    for (int i=0;i<myArrayParam.length;i++) 
    {...} 
} 

}

  1. В глобальном массиве:

класс methodarrays {

boolean [] myArray 

public static void main (String[]param) 
{ 
    myArray = arrays(); 
    seen(); 
    display(); 
} 

public static boolean seen() 
{ 
    for (int i=0;i<myArray.length;i++) 
    {...} 
} 

public static boolean display() 
{ 
    for (int i=0;i<myArray.length;i++) 
    {...} 
} 

}

0

Вот реализация имитируя собственное:

импорта javax.swing.JOptionPane;

Публичный класс Пример { частный статический булев [] birds = new boolean [5];

public static void main (String[]param){ 
     arrays(); 
     seen(); 
     display(); 
    } 

    public static boolean[] arrays() 
    { 
     // Completely unnecessary since values are set to false by default; 
     for (int i=0;i<birds.length;i++) 
     {birds[i]=false; 
     } 
     return birds; 
    } 
    public static void seen(){ 
     String quit = "100"; 
     String ans = ""; 
     while(!ans.equals(quit)) 
     { 
      ans=JOptionPane.showInputDialog(null,"Which bird are you reporting? \n 1) Blue Tit 2) Blackbird 3)Robin 4)Wren 5)Greenfinch"); 
      if (ans.equals("1")) 
      { birds[0] = true; 
      } 
      else if (ans.equals("2")) 
      { birds[1] = true; 
      } 
      else if (ans.equals("3")) 
      { birds[2] = true; 
      } 
      else if (ans.equals("3")) 
      { birds[2] = true; 
      } 
      else if (ans.equals("4")) 
      { birds[3] = true; 
      } 
      else if (ans.equals("5")) 
      { birds[4] = true; 
      } 
     } 
    } 

    public static void display(){ 
     System.out.println("Your results are: "); 
     System.out.println("Blue Tit: " + birds[0]); 
     System.out.println("Blackbird: " + birds[1]); 
     //and so on.. 
    } 

}

+0

Следует упомянуть, что вышеприведенный код может быть уменьшено по существу. Тем не менее, код был сохранен, чтобы отражать уровень владения, отображаемый в вопросе OP. –

1

Объявить

boolean [] birds = new boolean [5]; 

, как доступный объект для всех методов в классе.

import javax.swing.*; 

class methodarrays 
{ 

    private boolean [] birds = new boolean [5] 

    ... 

    public static boolean[] arrays() 
    { 
     for (int i=0;i<birds.length;i++) 
     {birds[i]=false; 
     } 
     return birds; 
    } 

    ... 
}