2012-06-16 3 views
0

У меня есть 2 класса 'Main' и 'FOR'. Из «Main» я буду вызывать метод «display» в классе «FOR». 'display' получит несколько значений String и вернет их в класс 'Main'. Здесь должны отображаться возвращаемые значения.Как вернуть несколько значений времени в класс в java?

Возвращается только одно значение. Как вернуть эти несколько значений?

Main.class

public class Main { 
    public static void main(String[] args) { 
     // TODO Auto-generated method stub 
     FOR obj = new FOR(); 
      String str = obj.display(); 
     System.out.print(str); 
     } 
    } 

FOR.class

public class FOR { 
    int j=5; 
    String hi="hi"; 
    String display() 
    { 
     for(int i=0;i<j;i++) 
     { 
     System.out.print(hi); 
// If I use this I will get 5 times hi.. but I dont 
/// want like this. I have to return hi String 5times to main and I have to display 
/// but should not call 5 times display() too,by calling one time, I have to return 
/// 5 time a string to Main class 


     } 
     return hi; 
     } 
} 

Желаемый выход для возврата 5 значений из метода 'отображения'. Здесь я должен получить 5 раз HI .. Но я получаю только один раз .. комментарий inline объясняется более подробно.

+0

Пожалуйста, используйте последовательный и логический отступ для кодовых блоков. –

+0

Это домашнее задание? [связанный вопрос] (http://stackoverflow.com/questions/457629/how-to-return-multiple-objects-from-a-java-method) – Everyone

ответ

2

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

Пример:

import java.util.List; 
import java.util.ArrayList; 

public class Main { 
    public static void main(String[] args) { 
     // TODO Auto-generated method stub 
     FOR obj=new FOR(); 
     List<String> str= obj.display(); 
     for(String v: str) { 
      System.out.print(v); 
     } 

    } 
} 


import java.util.List; 
import java.util.ArrayList; 
List<String> display() { 
    int j=5; 
    String hi="hi"; 

    List<String> result = new ArrayList<String>(); 

    for(int i=0;i<j;i++) { 
     result.add(hi);   
    } 
    return result; 
} 
0

несколько иной и более сложный подход, но полезно в определенных ситуациях.

public class Main { 
    public static void main(String[] args) { 
     FOR obj = new FOR(); 
     String str = obj.display(new ICallback() { 

      @Override 
      public void doSomething(String obj) { 
       // do whatever you want with this 
       System.out.println("This is being returned for each execution " + obj); 
      } 
     }); 

     System.out.print(str); 
    } 

    public static interface ICallback 
    { 
     void doSomething(String obj); 
    } 

    public static class FOR { 
     int j = 5; 
     String hi = "hi"; 

     String display(ICallback callback) { 
      for (int i = 0; i < j; i++) { 
       callback.doSomething(hi); 
      } 
      return hi; 
     } 
    } 
} 
Смежные вопросы