2011-07-15 38 views
54

Tôi có mảng Chuỗi với một số thành phần, mảng này có 5 thành phần và nó thay đổi một vài lần. Những gì tôi muốn làm là lặp qua mảng đó và lấy thành phần đầu tiên và thành phần bên cạnh thành phần đó. Vì vậy, lần đầu tiên tôi sẽ lấy số thành phần và thành phần số 2, lần thứ hai sẽ lấy số 2 và 3, số thứ ba 3 và 4 ... Và cứ tiếp tục cho đến khi bạn đến thành phần cuối cùng.Lặp lại qua mảng chuỗi trong Java

này như thế nào đến nay tôi đã đi:

String[] elements = { "a", "a","a","a" }; 

for(int i = 0; i <= elements.length - 1; i++) 
{ 
    // get element number 0 and 1 and put it in a variable, 
    // and the next time get element  1 and 2 and put this in another variable. 
} 

Làm thế nào tôi có thể thực hiện điều này?

Trả lời

3
String current = elements[i]; 
if (i != elements.length - 1) { 
    String next = elements[i+1]; 
} 

Điều này đảm bảo bạn không nhận được ArrayIndexOutOfBoundsException cho phần tử cuối cùng (không có 'tiếp theo' ở đó). Tùy chọn khác là lặp lại đến i < elements.length - 1. Nó phụ thuộc vào yêu cầu của bạn.

29
String[] elements = { "a", "a", "a", "a" }; 

for(int i = 0; i < elements.length - 1; i++) 
{ 
    String element = elements[i]; 
    String nextElement = elements[i+1]; 
} 

Lưu ý rằng trong trường hợp này, elements.length là 4, do đó bạn muốn lặp từ [0,2] để có được các yếu tố 0,1, 1,22,3.

3
String[] elements = { "a", "a","a","a" }; 

for(int i=0; i<elements.length-1; i++) 
{ 
    String s1 = elements[i]; 
    String s2 = elements[i+1]; 
} 
1

Bạn cần phải duy trì sự nối tiếp bao nhiêu lần bạn đang truy cập vào array.Use như thế này

int lookUpTime=0; 

    for(int i=lookUpTime;i<lookUpTime+2 && i<elements.length();i++) 
    { 
    // do something with elements[i] 
    } 

lookUpTime++; 
1

tôi sẽ tranh luận thay vì thử nghiệm i ít hơn elements.length - 1 thử nghiệm i + 1 ít hơn elements.length. Bạn không thay đổi miền của mảng mà bạn đang xem (tức là bỏ qua phần tử cuối cùng), nhưng thay vì thay đổi phần tử lớn nhất bạn đang xem trong mỗi lần lặp lại.

String[] elements = { "a", "a","a","a" }; 

for(int i = 0; i + 1 < elements.length; i++) { 
    String first = elements[i]; 
    String second = elements[i+1]; 
    //do something with the two strings 
} 
125

Chỉ cần để thêm vào các câu trả lời ở trên hoặc dưới đây mà bạn có thể làm một Enhanced For-Loop (cho java 5 và cao hơn) cho lần lặp trên các yếu tố của mảng:

String[] elements = { "a","a","a","a" }; 
for (String s: elements) {   
     //Do your stuff here 
     System.out.println(s); 
    } 
+1

Làm thế nào để bạn nhận được số lặp trong này? Hoặc tôi có cần phải làm điều đó một cách thủ công bằng cách khai báo một biến lặp và đếm được không? – User3

+1

Tôi nghĩ bạn sẽ cần thêm biến bổ sung để lưu trữ thông tin này – Michal

+1

Cũng lưu ý rằng vòng lặp nâng cao này áp dụng cho Java 1.5 trở lên. Tôi biết 1,4 và dưới đây là cổ đại nhưng hầu hết mọi người cố gắng này và nhận được lỗi và trong một số trường hợp họ sẽ không kiểm tra phiên bản java họ đang sử dụng. – Arty

0

Những thuật toán đều không chính xác vì sự so sánh:

for (int i = 0; i < elements.length - 1; i ++)

hoặc

cho (int i = 0; i + 1 < elements.length; i ++) {

Đúng là các phần tử mảng dao động từ 0 để length - 1, nhưng sự so sánh trong trường hợp đó nên less than or equal to. Đó phải là:

cho các yếu tố (int i = 0; i <.chiều dài; i ++) {

hoặc

for (int i = 0; i < = elements.length - 1; i ++) {

hoặc

cho (int i = 0; i + 1 < = elements.length; i ++) {

Mảng ["a", "b"] sẽ lặp như:

i = 0 là < 2: yếu tố [0] mang lại "a"

i = 1 là < 2: yếu tố [1] mang lại "b "

sau đó thoát khỏi vòng lặp vì 2 không phải là < 2.

các ví dụ sai cả thoát khỏi vòng lặp sớm và chỉ thực thi với phần tử đầu tiên trong trường hợp đơn giản này của hai phần tử.

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