2014-09-30 2 views
-1

그래서이 문자열을 navn이라고하고 char 배열로 만듭니다. 그런 다음 나는 그것을 통과하고 작은 "a"를 자본 A로 대체하려고합니다. 그러니 E S ... l A ... (큰 A)를 인쇄해야합니다.문자 배열 : 자바에서 대문자로 문자 대체

하지만 제대로 작동하지 않습니다. 어떤 도움이라도 좋을 것입니다!

private String navn = "Espen Askeladd"; 

public void metode4() { 

    char[] navnBlirCharArray = navn.toCharArray(); 

    for (char output : navnBlirCharArray) { 

     if(navnBlirCharArray.equals('a')) { 
      navnBlirCharArray[output] = 'A'; 
     } 
     System.out.println(output); 
    } 
} 
+0

toUpperCase를 사용하지 않는 이유 –

+1

다른 좋은 대답 외에도'navnBlirCharArray.equals ('a')'코드는 의미가 없습니다.'char'는'Character' 객체로 묶여집니다 , 그리고 나서'char []'객체와'Character' 객체가 같은지 비교할 것입니다. 물론, 항상 false를 반환 할 것입니다. –

답변

1

지나치게 복잡해졌습니다! 문자열에 replace()를 사용하십시오.

String navn = "Espen Askeladd"; 
    navn = navn.replace('a', 'A'); 
    System.out.println(navn); 

javadoc을 확인하십시오. 당신의 charint 값이 > navnBlirCharArray.length (사실에서 일부라면

1

당신은 int로 박스 도착 아주 잘 던질 수있는 당신의 빠른 열거, 내 char 인스턴스와 당신의 char[]를 색인하는 IT는 아니다 ArrayIndexOutOfBoundsException 것을 원하는 색인). 으로 대체하기 위해 Stringchar의 또는 String의 교체

String[] foo = {"foo", "bar"}; 
char c = 1; // valid 
System.out.println(foo[c]); // valid too 

출력

bar 

사용 String.replaceString.replaceAll :

무슨 일이 일어나고 있는지 이해하기 위해 여기에 예를 참조하십시오 정규 표현식. 당신은 전체 String/상하의 경우 필요하면 마지막으로 예를

String replacement = input.replace('a', 'A'); 

or... 

String replacement = input.replace("a", "A"); 

를 들어

, String.toUpperCase 또는 String.toLowerCase를 사용합니다.

+0

환호 친구! 고마워! – Koen

+0

@Koen 당신은 환영합니다 :) – Mena

1

for-each 구문은 배열의 요소 값을 반복하고 각 요소를 명명 된 변수에 배치합니다 (이 경우 output). 그것을 위해 당신이 배열의 요소의 인덱스를 알 필요가 있기 때문에 당신이 배열을 수정해야 할 때 적합하지 않습니다, 그래서 당신은 대신 루프 전통을 사용해야합니다

for (int i = 0; i < navnBlirCharArray.length; i++) { 
    if (navnBlirCharArray[i] == 'a') { 
     navnBlirCharArray[i] = 'A'; 
    } 
} 

System.out.println(new String(navnBlirCharArray)); 

을 나는 가정이 바로 학습이다 운동, 그렇지 않으면 당신은 문자열에 내장 replace 방법 훨씬 간단 할 수있는 : 당신은 출력은 문자가 아닌 int 것을 잊고 System.out.println(navn.replace('a', 'A'));

+0

건배 얘들 아, 너는 최고야. 모두들 대단히 감사합니다! – Koen

0

.
그래서 당신은 int counter = 0;을 사용하여 다음과 같은 모든 반복에 그것을 증가 할 수 있습니다

private String navn = "Espen Askeladd"; 

    public void metode4() { 
     int counter = 0 ; 
     char[] navnBlirCharArray = navn.toCharArray(); 

     for (char output : navnBlirCharArray) { 

      if(output.equals('a')) {  //not navnBlirCharArray 
       navnBlirCharArray[counter] = 'A'; //not output(which is character) 
      } 
      System.out.println(navnBlirCharArray[counter]); //not output (since you have not changed its value) 
     counter++; 
     } 
    } 


편집 : 또한 당신이 여러보다는 한 줄에 출력을 원하는 경우 (인쇄를 사용해야합니다 행

+0

Thnx 매우 도움 :) – Koen

+0

@keon 당신은 매우 환영합니다 :) – user3921830