2014-11-12 3 views
0

현재 코드는 두 가지 방법으로 제공됩니다. 나는 두 번째로 전환 할 첫 번째 위치를 얻으려고 노력하고있다. 예를 들어, 일부는 입력 6 &입니다. 7.이 값이 7 & 6이 되길 원하지만, 제 경우에는 미리 정의되어 있고 한 자리 두 자리 이상입니다.이전 방법을 수행하는 for 루프는 어떻게 작성합니까?

내 첫 번째 방법 :

static void nameSwitch (int[] array, int pos1, int pos2) { 

    int temp = array[pos1];  /*As you all may know, this is the switching of 
    array[pos1] = array[pos2]; position 1 and 2.*/ 
    array[pos2] = temp; 

} 

제 2의 방법 :

static void lastToFirstName() { 
    int [] values = {1,2,3,4,5,6,7,8,9,10}; 
    for(//this is where I am stuck at.) 


    System.out.println(Arrays.toString[values]); 
} 

내가 될 출력 [21436587109]를 원하고, 나와 함께 문제는 다른의 방법을 구현하기 위해 점점 메서드를 호출하고 루프를 올바르게 가져옵니다.

+1

아마도 재귀 적 방법을 사용하고 계십니까? – DnR

답변

2

다른 단어를 values (으)로 바꾸고있는 것처럼 보입니다.

원래의 입력 :

for (int i = 0; i < values.length; i += 2) { 
    nameSwitch(values, i, i + 1); 
} 

최종 출력 :이 for 루프에서 이루어질 수있다

int[] values = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; 

다른 모든 용어 '이동'따라 스위칭 동작을 수행하는 이와 유사한 구조체 :

values = {2, 1, 4, 3, 6, 5, 8, 7, 10, 9}; 

편집 : nameSwitch() 메서드에 비교 기능 추가

어떤 숫자가 더 큰지 고려하여 nameSwitch()을 편집 할 수 있습니다. pos1pos2보다 큰 경우 스위치가 수행됩니다. 그렇지 않으면 pos1pos2보다 작고 메서드가 즉시 반환됩니다.

static void nameSwitch(int[] array, int pos1, int pos2) { 

    if (pos1 < pos2) { 
     return; 
    } 

    int temp = array[pos1]; 
    array[pos1] = array[pos2]; 
    array[pos2] = temp; 

} 
+0

알겠습니다. 감사. 만약 내가 배열을 가지고 있다면 : 5, 6, 10, 3, 9, 11 그리고 나는 pos1과 pos 2를 비교하기를 원한다. 만약 그것이 더 크면 나는 바꾼다. 그리고 그렇지 않다면 나는 바꿀 수 없다. .. 나는 그것을 쓸 것이다, 나는 내가 이것을 얻었 기 때문에 내가 지금 그것을 얻을 수 있다고 생각한다! – Integral

+0

당신은'nameSwitch' 메쏘드에서 그것을 비교할 수 있습니다 –

+0

내 이름으로 그것을 비교할 수 있다는 것은 무엇을 의미합니까? 스위치 메서드? anyhting 인 경우 pos1과 pos2를 비교하는 조건이있는 다른 방법이됩니다. – Integral

1

나는 당신의 질문을 이해한다면이 코드는 요 숫자의 다음 쌍의 각각의 반복에서 2 전을 증가 할 필요가

static void nameSwitch (int[] array, int pos1, int pos2) { 
    int temp = array[pos1];  /*As you all may know, this is the switching of position 1 and 2.*/ 
    array[pos1] = array[pos2];  
    array[pos2] = temp; 

} 
public static void main(String[] args) { 
    int [] values = {1,2,3,4,5,6,7,8,9,10}; 
    int i; 
    for(i = 0; i < values.length; i+=2) { 
     nameSwitch(values, i, i+1); 
    } 
    System.out.println(Arrays.toString(values)); 
} 
1

이 시도

for(int i=0;i+1<values.length;i=i+2) 
{ 
    nameSwitch(values, i, i+1); 
    } 

를 작동 할 수 서로 바꿔야한다. i+1<values.length은 마지막 반복을 위해 남아있는 요소가 하나만있는 경우 그대로 유지합니다.

0
public class Switchnumbers { 
public static void main(String[] args) { 
    lastToFirstName(); 
} 

static void lastToFirstName() { 
    int[] values = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; 
    for (int i = 0; i < values.length; i = i + 2) { 
     int tmp = values[i]; 
     values[i] = values[i + 1]; 
     values[i + 1] = tmp; 
    } 
    for (int i = 0; i < values.length; i++) { 
     System.out.println(values[i]); 
    } 

} 

}

관련 문제