2014-02-12 76 views
-1

我應該編寫一個代碼,用於從用戶讀取一個句子並向後打印句子中單詞的字符。它應該包含一個幫助器方法,該方法將String作爲參數並返回一個新字符串,並將字符反轉。單個詞是顛倒過來的,例如句子「Hi dog cat」。會打印出「iH god tac」。我可以使整個句子相反,但我無法弄清楚如何反轉單詞。謝謝!另外,我知道如何返回字符串一次,我已經找到了,但我只是不能得到正確的字符串Java使用堆棧來翻轉一個句子中的單詞

import java.util.Scanner; 
import java.util.Stack; 

public class ReverseStack 
{ 
    public static void main(String[] args) 
    { 
     String sentence; 

     System.out.println("Enter a sentence: "); 
     Scanner scan = new Scanner(System.in); 

     sentence = scan.nextLine(); 

     String k = PrintStack(sentence); 
    } 

    private static String PrintStack(String sentence) 
    { 
     String reverse; 
     String stringReversed = ""; 

     Stack<String> stack= new Stack<String>(); 

     sentence.split(" "); 

     for(int i=0;i<sentence.length(); i++) 
     { 
      stack.push(sentence.substring(i, i+1)); 
     } 

     while(!stack.isEmpty()) 
     { 
      stringReversed += stack.pop(); 
     } 

     System.out.println("Reverse is: " + stringReversed); 


     return reverse; 
    } 

} 
+0

懶惰,我會顛倒順序的話,然後從後面讀取字符串並複製它。 –

回答

2

我將鍵入的闡述,所以你仍然可以編寫代碼的體驗,而不是我只是給你的代碼。

首先創建一個StackCharacter s。然後使用將String中的每個字符添加到Stack,從第一個char開始,然後第二個,依此類推。現在清除String或創建一個新的String來存儲反轉的單詞。最後,將Stack中的每個字符添加到String。這將拉開最後一個字符,然後是倒數第二個字符,依此類推。

注:我相信你必須使用Character包裝類,而不是原始的char;雖然我可能不正確。

如果您不熟悉如何Stack的工作,這裏是一個很好的互動工具來顯示它:http://www.cise.ufl.edu/~sahni/dsaaj/JavaVersions/Stacks/AbstractStack/AbstractStack.htm

0

我與不同種類的堆棧的做了,但我懷疑這可能幫助

private static String reverseWord(String in) { 
    if (in.length() < 2) { 
    return in; 
    } 
    return reverseWord(in.substring(1)) + in.substring(0, 1); 
} 

private static String reverseSentence(String in) { 
    StringBuilder sb = new StringBuilder(); 
    StringTokenizer st = new StringTokenizer(in); 
    while (st.hasMoreTokens()) { 
    if (sb.length() > 0) 
     sb.append(' '); 
    sb.append(reverseWord(st.nextToken())); 
    } 
    return sb.toString(); 
} 

public static void main(String[] args) { 
    String sentence = "Hi dog cat"; 
    String expectedOutput = "iH god tac"; 
    System.out.println(expectedOutput 
     .equals(reverseSentence(sentence))); 
} 

輸出

true 
相關問題