2016-11-14 6 views
2

문자열의 글자를 다른 글자로 대체하는 코드를 작성하고 있습니다. 그러나 현재의 나의 임무는 특정 형식의 코드를 원합니다. 나는 아래의 코드를 시도 : 나는 일반적으로 프로그램에 여전히 비교적 새로운 오전으로 char를 메서드로 변환 할 문자열로 변환하려고했습니다. 나는 어디로 잘못 가고 있니?

public String replaceLetter(String word, char letterToReplace, char replacingLetter) 
{ 
    letterToReplace = Character.toString(letterToReplace); 
    replacingLetter = Character.toString(replacingLetter); 
    word = word.replaceAll(letterToReplace, replacingLetter); 
    return word; 
} 

가 코딩에있는 비 효율성을 용서하십시오. 나는 또한 최근 문자와 문자열에 더 강렬하게 빠져 들었습니다. 그래서 나는 그들과 관련된 규칙이나 특성에 관해서 많이 알지 못합니다. 내 코드의 오류가 비논리적입니까? 현재 사용중인 IDE는 등급 지정을위한 과제를 수집하는 유일한 목적의 온라인입니다. 위의 코드를 컴파일 할 때마다 return 문이 누락되어 오류가 발생하므로 신뢰할 수 없다고 생각합니다. IDE 자체는 극히 제한되어 있으며 switch 문과 같은 것을 컴파일 할 수 없으므로 가능한 한 간단하게 유지할 수 있으면 더 좋을 것입니다. 그러나 IDE가 가장 정확한 코딩을 인식한다는 것을 알았습니다. for 문을 사용하여 코딩을 시도했습니다.

public String replaceLetter(String word, char letterToReplace, char replacingLetter) 
{ 
    for (int i = 0; i < word.length(); i++) 
    { 
     char ca = word.charAt(i); 
     if (ca == letterToReplace) 
     { 
      word = (word.substring(0,i)+ replacingLetter + word.substring(i+1)); 
     } 
    } 
    return word; 
} 

하지만 오류가 발생했습니다. 내 구문을 수정하는 데 도움이 될 것입니다.

+0

_ "하지만 오류가 발생했습니다."_ 무슨 오류가 있습니까? – JLRishe

+0

컴파일러는 내 괄호 사용이 잘못되었거나 for 문이 불법임을 지적했습니다. 그것은 그렇게하는 것으로 알려져 있지만, 나는 내 실수가 다른 곳에 있다고 믿는다. –

+3

대답은'toString'을 사용하면 결과가'String'이고'String' 변수에 할당해야한다는 것을 보여줍니다. Java는 강력하게 유형 지정됩니다. 즉, 다른 유형의 항목을 할당하여 변수 유형을 변경할 수 없습니다. 그러나 Java에'char' 인수를 허용하는'replace'가 있기 때문에 실제로 문자열로 변환 할 필요는 없습니다 : http://docs.oracle.com/javase/8/docs/api/java/lang/String .html # replace-char-char-. – ajb

답변

2

당신은 지정하려는 당신의 Strings 당신이 chars 기존, 당신은 (그것은 Strings 필요 chars을 허용하지 않는)에 replaceAll 함수로 그 chars를 전달하는에 Character.toString로 만들었습니다.

public String replaceLetter(String word, char letterToReplace, char replacingLetter) 
    { 
     String letterToReplaceAsString = Character.toString(letterToReplace); 
     String replacingLetterAsString = Character.toString(replacingLetter); 
     word = word.replaceAll(letterToReplaceAsString, replacingLetterAsString); 
     return word; 
    } 

편집 : AJB 지적, 당신도 원래 char 경계에서 통과 (대신 replaceAll의) replace를 호출 할 수 있고, 당신의 Strings을 할당하는 단계를 건너 여기에 코드를 변경해보십시오. replace 여전히 char의 모든 항목을 대체 않습니다 :

return word.replace(letterToReplace, replacingLetter); 
+0

두 가지 조언을 모두 주셔서 감사합니다. 다음 임무를 위해 그들을 명심하겠습니다. –

+0

문제 없습니다. 기꺼이 도와 드리겠습니다. :) – Gulllie

0

귀하의 letterToReplacereplacingLetter 변수는 문자 유형 및 방법은 문자열을 반환 Character.toString로에 문자열를 할당한다. 변수 유형을 문자열으로 변경하면 도움이 될 것입니다.