2016-09-29 2 views
-1

작은 프로젝트를 만들기 위해 자바를 사용하여 개발합니다.자바 문자열 생성기를 사용하여 문자열 역방향

문자열 반전을 원합니다. "나는 여자예요"라고 입력하면 반전 인쇄 ...

이미 StringBuilder를 사용하려고했습니다. 또한 나는

위시 프린트

내 ... 그것은 StringBuffer와 문법을 사용하여 ... 하지만 그것은 내 소원을 인쇄되지 않습니다 ... 실패 쓰기 -> "I lrig가 ma에"

"나는 여자 야."- "나는 마약 사용 중입니다" 역으로 !!

내가 할 수있는 방법은? ..

~ 내가 당신을 감사 도와주세요!

public String reverse() {   
    String[] words = str.split("\\s");  
    StringTokenizer stringTokenizer = new StringTokenizer(str, " "); 

    for (String string : words) { 
     System.out.print(string); 
    } 

    String a = Arrays.toString(words); 

    StringBuilder builder = new StringBuilder(a); 

    System.out.println(words[0]); 

    for (String st : words){ 
     System.out.print(st); 
    } 

    return "";  
} 
+0

http://stackoverflow.com/a/12305693/3145960 –

+0

OP는 전체 문자열을 뒤집지 않으려 고하며, 토큰 (공백으로 구분됨)이 바뀌길 원합니다. – TheLostMind

+0

StringBuilder에는 reverse() 메서드가 이미 있습니다. https://docs.oracle.com/javase/7/docs/api/java/lang/StringBuilder.html#reverse() – sura2k

답변

4

자바 (8) 코드는이 작업을 수행합니다 :

public static void main(String[] args) { 
    String str = "I am a girl"; 
    StringBuilder sb = new StringBuilder(); 
    // split() returns an array of Strings, for each string, append it to a StringBuilder by adding a space. 
    Arrays.asList(str.split("\\s+")).stream().forEach(s -> { 
     sb.append(new StringBuilder(s).reverse() + " "); 
    }); 
    String reversed = sb.toString().trim(); // remove trailing space 
    System.out.println(reversed); 
} 

O/P : 당신이 lambda에 가고 싶어하지 않는 경우

I ma a lrig 
+0

감사합니다 !!!!!! 그래서 ... forEach는 무엇입니까? (s -> {??????? –

+0

@ 한송 송이 - 그 람다 식이라고 부릅니다. – TheLostMind

1

것은 당신이 너무

을이 솔루션을 시도 할 수 있습니다
String str = "I am a girl"; 
     String finalString = ""; 
     String s[] = str.split(" "); 
     for (String st : s) { 
      finalString += new StringBuilder(st).reverse().append(" ").toString(); 
     } 
     System.out.println(finalString.trim()); 
    }