2014-12-07 2 views
0

Ok 그래서 배열 ar이 주어지면 arr의 원래 순서로 홀수 인 정수만 포함 된 배열을 반환합니다.오직 홀수 인 정수를 포함하는 배열을 반환합니다

내 코드 :

public int [] youMakeMeOdd(int [] arr) 
{ 
    int[] odds; 
    odds = new int[arr.length]; 
    for(int i = 0; i < arr.length; i++) 
    { 
     if(arr[i] % 2 != 0) 
     { 
     odds[i] = arr[i]; 
     } 
    } 
    return odds; 
} 

몇몇 계기 : 예상

............................ ............................... 실행 :

youMakeMeOdd ({1,2,3}) → {1 , 3} ..................... {1, 0, 3}

youMakeMeOdd ({2,1,3,5,7}) → {1, 3, 5, 7} ....... {0, 1, 3, 5, 7}

youMakeMeOdd ({2,4,6,8}) → {} ........................ {0, 0, 0, 0}

.

0 대신 공백을 넣는 방법을 알아낼 수 없습니다. 도와 주셔서 감사합니다, 감사합니다 :)

+0

의 정수를 추가

ArrayList<Integer> odds; odds = new ArrayList<>(); for(int i = 0; i < arr.length; i++) { if(arr[i] % 2 != 0) { 

Integer 클래스를 사용할 필요가 "나는 빈 공간을 넣어하는 방법을 알아낼 수없는 것 0 대신에 "- int 배열에 공백이 있습니까? –

+0

@Alex 공정하기 위해서는 어떻게해야할지 잘 모르겠다! ;) –

답변

0

출력 배열은 입력 배열의 크기로 초기화됩니다. 이 자바 코드를 추측, 배열 요소는 기본적으로 0으로 초기화됩니다. 따라서 if 조건이 i 번째 위치를 건너 뛸 때마다 기본값 (0)이 표시됩니다.

public int[] youMakeMeOdd(int [] arr) { 
    List<Integer> odds = new ArrayList<Integer>(); 
    for(int i = 0; i < arr.length; i++) 
    { 
     if(arr[i] % 2 != 0) 
     { 
     odds.add(arr[i]); 
     } 
    } 
    return convertIntegers(odds); 
} 

public static int[] convertIntegers(List<Integer> integers) 
{ 
    int[] ret = new int[integers.size()]; 
    Iterator<Integer> iterator = integers.iterator(); 
    for (int i = 0; i < ret.length; i++) 
    { 
     ret[i] = iterator.next().intValue(); 
    } 
    return ret; 
} 
당신은 단지 카운터를 증가하고 확률 할당 미리 계산 루프 가질 수
+0

배열의 크기를 어떻게 설정합니까? –

+0

이 경우 배열 목록을 사용할 수 있습니다. –

0

:

int counter = 0; 
for (int i = 0; i < arr.length; i++) 
{ 
    if (arr[i] % 2 != 0) 
    { 
     counter ++; 
    } 
} 
odds = new int[counter]; 
0
var result = input.Select(a=>a % 2 != 0 ? a : 0).ToArray() 

쉽게 linq을 사용할 수 있습니다, 기본적으로 원래의 배열을 사용하여 다음을 Select을 사용하여 배열의 값 자체를 선택하거나 짝수 인 경우 0을 선택한 다음 ToArray 메서드를 사용하여 array으로 변환하십시오.

+0

약간의 설명이 OP에 좋을 수도 있습니다. – Rizier123

0

저는 ArrayList를 사용합니다. 당신의 문제는 배열이 불변이라는 사실 인 것 같다. 그래서 당신은 배열에 불필요한 0을 자동으로 채운다. ArrayList는 차원을 변경할 수 있으므로 0을 가질 필요가 없습니다. http://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html

당신이 폴더의 유틸리티 패키지를 가져올 수 있는지 확인하십시오 :

당신은 여기에서 모습을 가질 수 있습니다.

import java.util.*; 



public ArrayList<Integer> youMakeMeOdd(int [] arr) 
{ 

꺾쇠 괄호에 넣을 유형을 지정해야합니다. INT가 원시적이기 때문에, 당신은 추가 방법은 말

  odds.add(new Integer(arr[i])); 
     } 
    } 
    return odds; 
} 
관련 문제