2014-11-07 3 views
0
String [] reverse = {"a", "b", "c", "1", "2", "3"}; 
for (String forward : reverse) 
    System.out.print (forward + " "); 
for (int j = 0; j < array.length ; j++){ 
    //j = last index of reverse -1 everytime this loops 
    reverse[i] = reverse[j] 
} 

원시 j에 대한 값을 가져 오는 방법을 찾아야합니까? 중첩 된 for 루프를 수행하는 것으로 생각했지만 너무 많은 루프가 발생합니다. 나는 수동으로 할 수 있습니다. 가능한 한 효율적으로하고 싶습니다. 특히 긴 문자열을 사용하기 시작하면 더욱 그렇습니다.문자열 배열을 어떻게 반전합니까?

+0

루프를위한'(array.length)/2', 임시 문자열 변수와 3 개의 할당 연산이 당신을 위해 그것을 할 것입니다 :) – TheLostMind

+0

그것에 대해 자세히 설명해 주시겠습니까? –

+0

'AlexR의 대답을 확인하십시오. – TheLostMind

답변

2

배열을 뒤집으려면 배열의 중간에서 반복을 중지해야합니다. 그렇지 않으면 두 번 뒤집어서 동일하게 유지합니다. for 루프를 다음으로 변경하십시오.

for (int j = 0; j < array.length/2 ; j++){ 

불행하게도 나는 왜 2 루프가 필요한지 이해하지 못합니다. 초기 배열을 인쇄하기 만하면됩니까?

+0

첫 번째는 배열을 인쇄 한 다음 역순으로 다시 인쇄해야합니다. –

0

배열을 뒤집으려면 배열의 절반을 반복하고 처음부터 끝까지 요소를 교체하기 만하면됩니다. 스왑 요소 요소 (처음부터 위치) (끝 위치 - 처음부터 위치)

for (i = 0; i < reverse.length/2; i++) { 
    String temp = reverse[i]; 
    reverse[i] = reverse[reverse.length - 1 - i]; 
    reverse[reverse.length - 1 - i] = temp; 
} 
+1

직접 답변을 크게 주셔서 감사합니다.하지만 개념적으로 이해하는 것을 선호합니다. 나를 설명해 주시겠습니까? –

4

이이

Collections.reverse(Arrays.asList(reverse)); 
+0

죄송합니다. 아직 배운 적이없는 것을 배웠습니다. "ThingsToLearn"목록에 추가했습니다. –

0

당신은 이런 식으로 뭔가를 할 수보십시오 : -

String [] reverse = {"a", "b", "c", "1", "2", "3"}; 
StringBuilder builder = new StringBuilder(); //use String builder to build 
for(String s : reverse) { 
    builder.append(s); 
} 
reverse = builder.reverse().toString().split(""); 

-> StringBuilder를 사용하여 문자열 만들기

-> 문자열 반전

->

+1

아, 그래, 다시 미안. 위의 내 의견을 보면 이미 알고있는 내용으로이 작업을 수행하는 방법을 배우고 싶습니다. –

0

먼저 각각의 문자열 요소의 배열을 형성하기 위해 다시 분할, 당신은 당신의 String[]를 인쇄 할 Arrays.toString(Object[])를 사용할 수 있습니다. 그런 다음 배열의 절반을 반복하여 현재 위치에서 대응하는 쌍 (길이 - 현재 색인에서 Java 배열이 색인화되어 배열의 마지막 위치가 array.length - 1임을 기억함)로 String을 바꿀 수 있습니다. 마지막으로 다시 인쇄하십시오. 마찬가지로,

String[] reverse = { "a", "b", "c", "1", "2", "3" }; 
System.out.println(Arrays.toString(reverse)); 
for (int i = 0, len = reverse.length/2; i < len; i++) { 
    String t = reverse[i]; 
    int p = (reverse.length - 1) - i; // 0,len - 1,len-1 - 2,len-2, etc. 
    reverse[i] = reverse[p]; 
    reverse[p] = t; 
} 
System.out.println(Arrays.toString(reverse)); 

출력

[a, b, c, 1, 2, 3] 
[3, 2, 1, c, b, a] 
+0

for 루프에 대해 4 개의 매개 변수가있는 이유는 무엇입니까? –

+0

'len'은'i'와 동시에'int'로 선언됩니다. –

0

당신이 역 요소의 목록을 얻을 수 있지만 먼저 유 나열하는 문자열 배열을 추가해야 Collections.reverse() 메소드를 사용하는 것입니다 .. String[] elements = {"a","b","c"}; List<String> list = Arrays. as-list(elements); Collections.reverse(list); 후 당신은 반복 할 것입니다.

관련 문제