2012-10-25 82 views
1

這是我家庭作業的解決方案,目的是根據用戶輸入一個句子來反轉字符串中的每個單詞。我自己完成了這個,但我只是想知道迭代器如何在這段代碼中工作。我不明白tempword =「」的解釋。以及他如何打印出每個由空格分隔的單詞。JAVA基本迭代器

import java.util.Scanner; 

public class StringReverser 
{ 
    public static void main(String args[]) 
    { 
     String sentence; 
     String word; 
     String tempWord = ""; 

     Scanner scan = new Scanner(System.in); 
     Scanner wordScan; 

     System.out.print("Enter a sentence: "); 
     sentence = scan.nextLine(); 

     wordScan = new Scanner(sentence); 

     while(wordScan.hasNext()) 
     { 
      word = wordScan.next(); 

      for(int numLetters = word.length() - 1; numLetters >= 0; numLetters--) 
       tempWord += word.charAt(numLetters); 

      System.out.print(tempWord + " "); 
      tempWord = ""; 
     } 
     System.out.println(); 
    } 
} 
+0

請認識到它是Java而不是JAVA –

+0

儘管它是關閉的話題,但這段代碼實際上是對連續concat使用String的一個壞例子。請使用StringBuilder/StringBuffer –

回答

0

該位的空間

System.out.print(tempWord + " "); 

該位反轉它

for(int numLetters = word.length() - 1; numLetters >= 0; numLetters--) 
      tempWord += word.charAt(numLetters); 

此位設置它爲下一個字

tempWord = ""; 
+0

我完全理解for循環,但tempWord =「」;爲下一個單詞設置它?對不起,我是一個完整的笨蛋 – Aaron

+0

其清空它。它說我已經完成了這個詞,並且即將重複使用字符串來開始在下一個字中保存每個字符 – case1352

+0

它如何知道何時在每個空間處將其反轉,然後打印該分段? – Aaron

0

for循環增加從最後一個cha的索引倒數在第一個字(第零個基礎)

該打印打印反向詞+空格(「」),它使用print代替println的事實是因爲println會添加一個回車將每個單詞在不同的行中。

tempWord =「」;在每次迭代結束時重置變量,以便可以重用。

+0

謝謝我完全理解for循環,但不會行tempWord + = word.charAt(numLetters); System.out.print(tempWord +「」);打印整個setennce? – Aaron

+0

每次迭代一個新字符被添加到tempword。在迭代循環結束時,即一旦完成一個單詞,臨時文本將被打印,清空,並且循環重新開始,並且下一個單詞 – thedayofcondor

+0

一個好的但繁瑣的學習方法是按照算法一行一行地自行「模擬」它一張紙,跟蹤所有的變量 – thedayofcondor