2010-02-20 32 views

Trả lời

23

Cú pháp đúng sẽ là

return new String[]{ ans1, ans2 }; 

Mặc dù bạn đã tạo hai String s (ans1ans2) bạn chưa tạo mảng String (hoặc String[]) bạn đang cố gắng để trở lại. Cú pháp trình bày ở trên là viết tắt cho các mã chưa tương đương hơi dài dòng hơn:

String[] arr = new String[2]; 
arr[0] = ans1; 
arr[1] = ans2; 
return arr; 

nơi mà chúng tôi tạo ra một chiều dài 2 Chuỗi mảng, gán giá trị đầu tiên ans1 và thứ hai để ans2 và sau đó trở về mảng đó.

+0

Tại sao lại như vậy? Ive alderly tạo ra một chuỗi .. nếu tôi tạo ra một chuỗi mới như ans1 = new String [] sau đó nó sẽ làm việc? – higherDefender

+0

@ D.J. bởi vì mặc dù bạn đã tạo ra các đối tượng String mà bạn chưa tạo ra một mảng String (xem câu trả lời đã chỉnh sửa của tôi để biết thêm chi tiết) –

9
return new String[] { ans1, ans2 }; 

Lý do bạn phải làm điều này chỉ là nói {ans1, ans2} không thực sự tạo đối tượng bạn đang cố gắng trả lại. Tất cả những gì nó làm là thêm hai phần tử vào một mảng, nhưng không có "chuỗi mới []" mà bạn chưa thực sự tạo ra một mảng để thêm các phần tử vào.

+0

Tại sao nó lại như vậy? Ive alderly tạo ra một chuỗi .. nếu tôi tạo ra một chuỗi mới như ans1 = new String [] sau đó nó sẽ làm việc? – higherDefender

+0

@ D.J Cập nhật câu trả lời của tôi với giải thích thêm. –

4
return new String[] {ans1 , ans2}; 
+0

Tại sao lại như vậy? Ive alderly tạo ra một chuỗi .. nếu tôi tạo ra một chuỗi mới như ans1 = new String [] sau đó nó sẽ làm việc? – higherDefender

2
return new String[]{ans1,ans2}; 

này nên làm việc. Để câu hỏi khác của bạn trong các ý kiến. Vì Java là ngôn ngữ được gõ mạnh, tất cả các biến/kết quả sẽ được khởi tạo. Vì bạn không instantiating kết quả bạn muốn quay trở lại bất cứ nơi nào, chúng tôi đang làm instantiation trong báo cáo trở lại chính nó.

-1

Tôi chỉ là một học sinh trung học vào lúc này, nhưng một giải pháp dễ dàng mà tôi nhận được từ một người bạn của tôi sẽ hoạt động. Nó giống như thế này (đây là một phần của một dự án trong lớp AP của tôi):

public String firstMiddleLast() 
{ 
    //returns first, middle, and last names 
    return (first + " " + middle + " " + last); 
} 
+1

Và sau đó? Người gọi phải saperate chúng một lần nữa ...? – alexander

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