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
'IT박스' 카테고리의 다른 글
상대 URL을 전체 URL로 바꾸려면 어떻게합니까? (0) | 2020.11.17 |
---|---|
내 jQuery 대화 상자를 중앙에 배치하려면 어떻게해야합니까? (0) | 2020.11.16 |
iOS UISearchBar에서 검색 (입력 속도 기준)을 제한하는 방법은 무엇입니까? (0) | 2020.11.16 |
Jest 캐시를 지우는 방법? (0) | 2020.11.16 |
lxml의 태그 안의 모든 텍스트 가져 오기 (0) | 2020.11.16 |