2011-02-03 7 views
0

'0'을 'F'로, 1을 'E'등으로 바꾸고 싶습니다.replace는 자릿수를 대체하지 않습니다.

예컨대 "234567890ABCDEF"가 "DCBA"발생한다

  final char[] items = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'}; 
     for (int i = 0; i < 16; i++) { 
      newString = oldString.replace(items[i], items[15-i]); 
     } 

불행하게도,이 코드 조각은 작동하지 않습니다. 그것은 모든 문자를 대체하지만 숫자는 대체하지 않습니다. 어떤 제안, 왜? 나는

+2

귀하의 예는 '아무튼 귀하의 설명과 일치하지 않습니다. '0'은 'F'가 아닌 '5'로 바뀌 었습니다. –

+1

여기서 무엇을하려고하는지 혼란 스럽습니다. 문자열을 뒤집어 쓰려고합니까? 또는 자리 바꾸기? 또한 몇 가지 질문을 살펴보고 답변을 수락하십시오. – Grammin

+0

FEDCBA9889ABCDEF가 표시됩니까? – Nishant

답변

2

귀하의 문제는 당신이 결과를 반전하기 때문에 당신이 = 내가 0이 8

+0

이것이 더 설명이 될 수있다. –

+0

@ 마크 나는 내게 숙제를 많이하는 것처럼 힌트를주는 동안 나는 퍼즐의 일부분을 지키려고 노력했다. – rsp

+0

필요한 것은 Perl의 음역 기능 (tr ///)입니다. 그러나 자바에 내장 된 것이 하나 있다고 나는 생각하지 않는다. 웹상에 그러한 라이브러리에 대한 많은 구현이 있다는 것을 알았습니다. –

0

(15)에 = 전 7에 다시 문자에있는 숫자를 교체하는 것이입니다 ... 손실에 정말이야 두 번째 교체에서 처음 8 번 교체하는 동안 완료되었습니다! 즉,

0-7은 0-7로 다시 변환되지만 8과 9는 해당 조합으로 변환됩니다. 당신은 당신의 코드에 디버그를 추가하고 반복 보면

0

당신은 당신이 마지막 반복의 대체() ES와 함께 첫 번째 반복의 결과를 덮어 쓰기하는 방법을 알 수 있습니다 :

234567890ABCDEF 
23456789FABCDEF 
23456789FABCDEF 
D3456789FABCDEF 
DC456789FABCDEF 
DCB56789FABCDEF 
DCBA6789FABCDEF 
DCBA9789FABCDEF 
DCBA9889FABCDEF 
DCBA9779FABCDEF 
DCBA6776FABCDEF 
DCB56776F5BCDEF 
DC456776F54CDEF 
D3456776F543DEF 
23456776F5432EF 
23456776F54321F 

관련 문제