2014-12-19 2 views
0

단어 의 문자를 바꿔 쓰는 데이 코드를 썼지 만 어떤 이유로 인해 첫 번째 문자를 바꿀 수 없기 때문에 도움이 될 것입니다.문자열의 문자를 교환하는 방법

public class StringWorker{ 
    public static void main (String[]arg$){ 

     Scanner in = new Scanner(System.in); 
     System.out.println("enter a word: "); 
     String str = in.nextLine(); 

     char[] newCh = str.toLowerCase().toCharArray(); 
     int length= str.length()-1; 
     char temp; 

     for (int i=0; i<length; i++){ 

       temp = newCh[i];  
       newCh[i] = newCh[i++]; 
       newCh[i++] = temp; 


     } 
     String revamped = String.valueOf(newCh); 
     System.out.println(revamped); 
     System.exit(0); 
    } 
} 
+6

'i ++'를 너무 자주 호출하고 있습니다. – Tom

+0

단어의 두 글자를 바꿔야합니다. 맞습니까? –

+1

스타일 메모 : 클래스 이름을 대문자로 시작하는 Java 클래스 이름 지정 규칙을 따르십시오. stringWorker와 stringWorker를 교체하는 것을 의미합니다. – IdusOrtus

답변

5

변경 :

for (int i=0; i<length; i++){     
    temp = newCh[i];  
    newCh[i] = newCh[i++]; 
    newCh[i++] = temp; 

에 : 당신은 루프의 첫 번째 반복을 통해 얻을 때까지는 있도록

for (int i=0; i<length - 1; i++){ 
    temp = newCh[i];  
    newCh[i] = newCh[i+1]; 
    newCh[i+1] = temp; 
} 

i++i를 증가한다 (i = i + 1를 등), i입니다 이미 2.

추가 : 이것은 th입니다. 나에게 뛰어 다니는 첫 번째 일, 그러나 나는 "스왑"에 대한 당신의 정의에 대해 궁금합니다. 이 작은 수정으로 인해 첫 번째 문자가 끝까지 계속 이동합니다. "스왑"은 "waps"가됩니다.

+0

마지막 문자에 도달하면 오류가 발생하지 않습니다. 나는 느슨하게 '스왑'을 사용하고 있었다. – Ambassador

+0

첫 번째와 마지막 문자 만 바꿔야한다면 다음과 같은 좋은 해결책이 루프와 비교되지 않을까? '새로운 StringBuilder (str.substring (1)). append (str.charAt (0))'. – SubOptimal

+0

@ Ambassador - 그래, 나는 그 변화를 수정했다. 이전에 몇 분간 무료로 처리 했으므로 그 자리에 넣지 않았습니다. – splrs

관련 문제