2010-11-20 36 views
8

Tôi có một mảng:Yếu tố vị trí trong mảng

char[] modifiers = {'A', 'M', 'D'}; 

và một biến:

char a = 'D' 

Làm thế nào để có được vị trí của giá trị biến trong mảng?

Cảm ơn

Trả lời

3

Hãy thử:

int pos = -1; 
for(int i = 0; i < modifiers.length; i++) { 
    if(modifiers[i] == a) { 
    pos = i; 
    break; 
    } 
} 

này sẽ nhận được xuất hiện đầu tiên của giá trị trong biến pos, nếu có nhiều người thân, hoặc -1 nếu không tìm thấy.

+3

'int pos = -1; 'trông tốt hơn. – khachik

+0

@khachik Ah! Cảm ơn vì đã bắt! –

0

Lặp lại mảng và so sánh các phần tử với biến, trả về chỉ mục, nếu bằng. Trả lại -1 nếu không tìm thấy. Bạn có thể muốn xem xét việc sử dụng bất kỳ triển khai nào của java.util.List.

3

Something dọc theo dòng có thể làm các trick:

Collections.indexOfSubList(Arrays.asList(array), Arrays.asList('D')) 

Cố gắng để tránh một vòng lặp của nhãn hiệu: p

+2

Tại sao không chỉ sử dụng 'Arrays.asList (mảng) .indexOf ('D');'? – st0le

+0

@ st0le bạn nên làm cho câu trả lời đó. Đó là giải pháp tốt nhất cho vấn đề! – leo

+0

@leo, xong! :) PADPAD – st0le

2

Bạn có thể tự mình làm một cách dễ dàng đủ, bạn có thể sử dụng các loại() và binarySearch () các phương thức của lớp java.util.Arrays, hoặc bạn có thể chuyển đổi char [] thành một String và sử dụng phương thức String.indexOf().

+0

+1. 'new String (modifiers) .indexOf ('D')' là một cách khá súc tích để làm điều này. – Jonik

+0

Cách tiếp cận thông minh +1. –

9

Đây là cách ngắn nhất mà tôi biết. Tôi đã có điều này như một bình luận nhưng bây giờ viết nó như là một câu trả lời. Chúc mừng!

Ký tự [] array = {'A', 'B', 'D'};

Mảng.asList (mảng) .indexOf ('D');

+0

Điều này không hiệu quả. Hãy thử nó với các giá trị của OP. Nó trả về -1. –

+0

Bắt tuyệt vời. đã sửa. Việc khởi tạo sẽ cần phải có với Ký tự. – st0le

0

này rất đơn giản và kiểm tra mã để bạn tham khảo

String[] arrayValue = {"test","test1","test2"}; 
int position = Arrays.asList(arrayValue).indexOf("test"); 

position: 0th Position 
Các vấn đề liên quan