IT박스

Java에서 문자열 배열 반복

itboxs 2020. 11. 16. 08:00
반응형

Java에서 문자열 배열 반복


일부 구성 요소가 포함 된 문자열 배열이 있으며이 배열에는 5 개의 구성 요소가 있으며 몇 번 다릅니다. 내가하고 싶은 것은 그 배열을 반복하고 첫 번째 구성 요소와 그 옆의 구성 요소를 가져 오는 것입니다. 그래서 처음에는 1 번 성분과 2 번 성분을 얻고, 두 번째는 2 번과 3 번, 3 번 3 번과 4 번은 마지막 성분에 도달 할 때까지 계속됩니다.

이것은 내가 얼마나 멀리 왔는지 :

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. 
}

어떻게하면 되나요?


배열 요소에 대한 반복을 위해 향상된 for 루프 (Java 5 이상)를 수행 할 수 있습니다 .

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

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

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

참고이 경우에 것을 elements.length당신이에서 반복 할 수 있도록, 4 [0,2]요소를 얻기 위해 0,1, 1,2그리고 2,3.


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

이렇게하면 ArrayIndexOutOfBoundsException마지막 요소에 대한를 얻지 못합니다 ( '다음'이 없음). 다른 옵션은 i < elements.length - 1. 귀하의 요구 사항에 따라 다릅니다.


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

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

내가 대신 시험의 주장 i보다 elements.length - 1테스트 i + 1미만을 elements.length. 보고있는 배열의 도메인을 변경하는 것이 아니라 (즉, 마지막 요소 무시) 각 반복에서보고있는 가장 큰 요소를 변경하는 것입니다.

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
}

어레이에 액세스하는 횟수를 직렬로 유지해야합니다.

int lookUpTime=0;

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

lookUpTime++;

이러한 알고리즘은 비교로 인해 모두 올바르지 않습니다.

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

또는

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

It's true that the array elements range from 0 to length - 1, but the comparison in that case should be less than or equal to. Those should be:

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

or

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

or

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

The array ["a", "b"] would iterate as:

i = 0 is < 2: elements[0] yields "a"

i = 1 is < 2: elements[1] yields "b"

then exit the loop because 2 is not < 2.

The incorrect examples both exit the loop prematurely and only execute with the first element in this simple case of two elements.


    String[] nameArray= {"John", "Paul", "Ringo", "George"};
    int numberOfItems = nameArray.length;
    for (int i=0; i<numberOfItems; i++)
    {
        String name = nameArray[i];
        System.out.println("Hello " + name);
    }

If you are looking for performance and the order of iteration is not relevant, you can iterate using an optimised reverse loop:

for(int i=elements.lenth; --i>=0;) {...}

In such a way you are retriving the length of the array once, then decrementing the index and comparing with zero in one atomic operation. Last but not last comparing with zero is a very fast operation, often optmised by many processors (faster than comparing to the legnth of the array).

참고URL : https://stackoverflow.com/questions/6707695/iterate-through-string-array-in-java

반응형