2014-03-25 78 views
0

對於我的程序,我想在一行文本中反轉字母。但我不想扭轉句子中單詞的順序。 例如,當我輸入: 「這是一個字符串」在一個句子中反轉單詞字母java

我得到:gnirts一個SI SIHT

但我想:SIHT SI一個gnirts

public static String reverseWordCharacters(String text1) { 
     String reverse = ""; 
     int length = text1.length(); 
     for (int i = length - 1; i >= 0; i--) { 
      reverse = reverse + text1.charAt(i); 
      System.out.println(); 
     } 
     return reverse; 
    } 

} 
+0

所以呢? –

+0

聞起來像作業與這些限制..... –

+0

這就是爲什麼我提供了我所做的迄今爲止 – user3442748

回答

3
String sentence = "This is a string"; 
String[] words = sentence.split(" "); 
String invertedSentece = ""; 
for (String word : words){ 
    String invertedWord = ""; 
    for (int i = word.length() - 1; i >= 0; i--) 
     invertedWord += word.charAt(i); 
    invertedSentece += invertedWord; 
    invertedSentece += " "; 
} 
invertedSentece.trim(); 
+1

對於長句子/輸入,'StringBuffer'會更適合'invertedSentence'。同樣看看用於反轉字符串的StringUtils。 – Holloway

+0

請注意:只有在沒有多碼字母的情況下,此碼纔有效。如果你有,歡鬧隨之而來。 – Deduplicator

+0

感謝您的領導 – user3442748

-1
{ 
     String sentence="This is String"; 
     String[] words=sentence.split(" "); 
     String inverted=" "; 
     for(String eachWord : words){   
      for(int i=0;i<eachWord.length();i++){ 
       inverted+=eachWord.charAt(eachWord.length()-1-i); 
      } 
      inverted+=" "; 
} 
     System.out.println("Inverted words in the given sentence is :"+inverted); 
    } 
0
private static String revWrord(String s) { 
     LinkedList word = new LinkedList(); 
     Scanner scanfs = new Scanner(s); 

     while(scanfs.hasNext()) { 
      word.add(scanfs.next()); 
     } 

     StringBuilder output = new StringBuilder(); 
     StringBuilder temp = new StringBuilder(); 

     while(true) { 
      temp.append(word.poll()).reverse(); 
      output.append(temp); 
      temp.delete(0,temp.length()); 

      if(word.isEmpty()) { 
       break; 
      } else { 
       output.append(" "); 
      } 
     } 
     return output.toString(); 
} 
+2

請爲您的代碼提供解釋 –

+1

收到一個句子後,我將這個單詞分開並放入鏈接列表中作爲隊列。 然後取出那個單詞並倒過來,然後在輸出追加那個句子而不是反向單詞。 like 輸入:我愛孟加拉國。 輸出:I evoL hsedalgnaB –

-1
StringBuffer s=new StringBuffer("I live in India"); 
int i=0,j=0,w=0; 
//w is first position of word 
//j is last position of word 

while(i<s.lenght){ 

if(s.charAt[i]==" "||i==s.lenght()-1) 
{ 
j=i; 
if(i==s.length-1) 
j=i; 
else 
j--; 

swapMethod(w,j); 
w=i+1; 
} 
i++; 
} 
+0

我正在改進代碼空格,但是你甚至沒有正確拼寫'length',所以這甚至不能編譯。 –

0

這可能是你嘗試過的最簡單的方法

import java.util.*; 
public class ReverseString{ 
public static void main(String[] args){ 
    Scanner sc = new Scanner(System.in); 
    System.out.print("Enter any Sentence: "); 
    String sentence = sc.nextLine(); 
    String[] stringArray = sentence.split(" "); 
    for(int i = 0; i<stringArray.length; i++){ 
     String temp = new StringBuilder(stringArray[i]).reverse().toString(); 
     System.out.print(temp+" "); 
    } 
    } 
} 
相關問題