2011-11-25 45 views
5

Tôi có danh sách mảng nơi tôi muốn thêm phần tử qua vòng lặp for.Java: Thêm phần tử vào danh sách mảng với vòng lặp FOR nơi tên phần tử đã tăng số

Answer answer1; 
Answer answer2; 
Answer answer3; 

ArrayList<Answer> answers = new ArrayList(3); 

for (int i=0;i<3;i++) 
{ 
    answers.add(//HOWTO: Add each of the answers?); 
} 

EDIT: Làm thế nào điều này có thể xảy ra nếu tôi có, giả sử 50 câu trả lời?

+2

Vòng lặp của bạn sẽ chạy 4 lần. – spender

+0

tôi nghĩ rằng câu hỏi nhập khẩu là: đầu vào của bạn là gì? bạn có muốn thêm các trường không? hoặc một mảng? hoặc danh sách khác? –

+0

Thaks cho mỗi đầu vào. Tôi nghĩ rằng tôi cần phải xác định lại cách tôi đang cố gắng để làm điều này ... gợi ý tốt nhất cho tôi là những gì Chris đã viết .. Tôi sẽ đi với điều đó. – Rupal

Trả lời

12

Bạn không thể làm điều đó theo cách mà bạn đang cố gắng để ... bạn có thể làm điều gì đó có lẽ như thế này:

List<Answer> answers = new ArrayList<Answer>(); 
for(int i=0; i < 4; i++){ 
    Answer temp = new Answer(); 
    //do whatever initialization you need here 
    answers.add(temp); 
} 
1

lý do bạn cần vòng lặp cho điều này? giải pháp rất rõ ràng:

answers.add(answer1); 
answers.add(answer2); 
answers.add(answer3); 

là vậy. không cần vòng lặp.

+1

Tôi đoán có thể có hơn 3, và tổng số có thể thay đổi – NimChimpsky

+1

Có, nó đủ dễ dàng cho 3 phần tử, nhưng nếu tôi có 100 thì sao? – Rupal

+0

nhưng: là các trường câu trả lời? - trong ví dụ của anh ấy. đầu vào là gì? –

6

Điều đó không thể thực hiện được với vòng lặp for, trừ khi bạn sử dụng API phản chiếu. Tuy nhiên, bạn có thể sử dụng Arrays.asList thay vì để thực hiện giống nhau:

List<Answer> answers = Arrays.asList(answer1, answer2, answer3); 
+0

Điều này không có tác dụng, tôi nhận được các kiểu không tương thích: không có (các) cá thể nào tìm thấy biến kiểu T tồn tại để java.util.List tuân theo java.util.ArrayList. – PMARINA

0

Đặt các câu trả lời vào một mảng và lặp trên nó:

List<Answer> answers = new ArrayList<Answer>(3); 

for (Answer answer : new Answer[] {answer1, answer2, answer3}) { 
    list.add(answer); 
} 

EDIT

trả lời Xem João cho một nhiều giải pháp tốt hơn. Tôi vẫn còn để lại câu trả lời của tôi ở đây như là một lựa chọn khác.

1

Nếu bạn chỉ cần một danh sách, bạn có thể sử dụng:

List<Answer> answers = Arrays.asList(answer1, answer2, answer3); 

Nếu bạn đặc biệt yêu cầu một ArrayList, bạn có thể sử dụng:

ArrayList<Answer> answers = new ArrayList(Arrays.asList(answer1, answer2, answer3)); 
0

luôn luôn có một số hacks phản ánh thứ bạn có thể điều chỉnh. Dưới đây là một số ví dụ, nhưng sử dụng một bộ sưu tập sẽ là giải pháp cho vấn đề của bạn (số nguyên bạn dính vào tên biến của bạn là một gợi ý tốt cho chúng tôi biết bạn nên sử dụng một bộ sưu tập!).

public class TheClass { 

    private int theField= 42; 

    public static void main(String[] args) throws Exception { 

     TheClass c= new TheClass(); 

     System.out.println(c.getClass().getDeclaredField("theField").get(c)); 
    } 
} 
0

Giải pháp của Thomas là đủ tốt cho vấn đề này.

Nếu bạn muốn sử dụng vòng lặp để truy cập vào ba Câu trả lời này, trước tiên bạn cần đặt ba thành một cấu trúc dữ liệu giống như mảng — loại tương tự như nguyên tắc. Vì vậy, vòng lặp được sử dụng để hoạt động trên một cấu trúc dữ liệu giống như mảng, không chỉ đơn giản là để đơn giản hóa nhiệm vụ đánh máy. Và bạn không thể sử dụng vòng lặp FOR bởi chỉ đơn giản là chỉ cần tăng số lượng tên cho các phần tử.

Các vấn đề liên quan