2016-10-19 3 views
-6

문자열 입력을 반전하는 방법을 만들었지 만 오류가 발생하고 메소드 반환 유형을 char로 변경하도록 알려줍니다. 이유를 이해하지 못합니다. 누구든지이 문제를 해결하는 방법을 알고 있습니까? 병이 오류의 스크린 샷을 포함Java에서 문자열 반전 - 오류 발생

public String reverse(String text) { 
    String reverse = " "; 
    for(int i = text.length() -1; i >= 0; i--) { 
     reverse = text.charAt(i); 
    } 
    return reverse; 
} 
+1

함수'CharAt'는'String'이 아닌'char'을 반환합니다! 사실, 당신이 새로운 값을 모든 반복에서 '역전'변수로 재 할당하려고 시도하고 있다는 사실은 말하지 마라. 그것은 당신의 특정 목적에 상관없이 꽤 난센스 다. –

+3

텍스트가 충분할 때 이미지를 게시하지 마십시오. –

답변

1

는 함께 문자를 CONCAT해야 :

public static String reverse(String text) { 
    String reverse = ""; 
    for (int i = text.length() - 1; i >= 0; i--) { 
     reverse += text.charAt(i); 
    } 
    return reverse; 
} 

또한

public static String reverse(String text) { 
    return new StringBuilder(text).reverse().toString(); 
} 
+0

루프의 매 반복마다'reverse'가 덮어 쓰기가됩니다. –

+0

예 저는 그것을 간과했습니다. 내 대답 편집 –

1
public String reverse(String text) { 
    String reverse = ""; 
    for (int i = text.length() -1; i >=0; i--) { 
     reverse+=text.charAt(i); 
    } 
    return reverse; 
} 
0

당신은 기본적으로 charAt(index) 때문에이 오류가있어 사용할 수 있습니다 지정된 인덱스에 char 값을 반환합니다.

코드에서 text.charAt(i)char 값을 반환하며 사용자는 String에 할당합니다.

대신

, 당신은 사용할 수 있습니다 : 참고로

reverse += String.valueOf(text.charAt(i)); 

: 당신은이 한 줄의 코드를 사용하여 문자열 text을 취소 할 수 있습니다 :

new StringBuilder(text).reverse().toString(); 
0

이 사용 String를 취소 할 수 있습니다 재귀가 이쪽

String reverse(String str){ 
    return (str.length()==1)?str:reverse(str.subString(str,1)); 
} 
이 코드는 잘 작동
0

.. 역 후

public class reversestring { 
    public static String reversestring(String string) { 
     String reverse = new StringBuffer(string). 
     reverse().toString(); 
     return reverse; 
     }  
    public static void main(String[] args){ 
       String string="abcdef"; 
       System.out.println("String after reverse:" +reversestring(string)); 
      } 
     } 

문자열 : fedcba

이 ..

이제 특정 의문에 대답 도움이 될 것입니다 ..

ja String charAt() 메소드는 지정된 색인 번호에 char 값을 리턴합니다. 출력은 K이다

public class Solution{ 
public static void main(String args[]){ 
String name="StackExchange"; 
char ch=name.charAt(4);//returns the char value at the 4th index 
System.out.println(ch); 
}} 

0부터 인덱스 번호

이 수 charAt()가 작동하는 방식이다 .. 시작한다. 문자열 반환을 기대할 수는 없습니다.

행복한 학습!

0

당신은 훌륭한 일을했으며, for 회 돌이에서의 작은 실수입니다. 당신은 이미 모든 문자열을 예비 문자열에 다시 추가해야합니다. @ barakmanos가 이미 강조된 문자열을 재 할당하지 않고 코드를 완벽하게 작성하면됩니다.이 작은 변경 만하면됩니다. 그러면 괜찮을 것입니다.

변경이 -이 ----- >>>>에 >>reverse = text.charAt(i);

에게 단지 문자열 에 할당하지 다시 예약에 문자를 계속 추가 reverse += text.charAt(i);

때문에 할 수 없습니다 문자열에 char을 할당하여 char을 문자열로 변환합니다.