2015-02-06 85 views
0

數據我把這個班從一本書中,我學習。但是這本書沒有精確地解釋如何在下面的translateWord方法中使用translate方法的返回值,等等。這本書說的唯一的東西是:如何一個類的方法,可以通過存儲到另一種方法在同一類

翻譯方法將每個單詞傳遞給專用支持方法translateWord。

是的,但我想知道這樣的情況發生。我問,因爲我已經結束了JAVA CLASSES的章節,我還不瞭解這個過程。

import java.util.Scanner; 

public class PigLatinTranslator { 

    //------------------------------------------------------------- 
    //Translates a sentence of words into Pig Latin. 
    //------------------------------------------------------------- 
    public static String translate(String sentence) 
    { 
     String result = ""; 

     sentence = sentence.toLowerCase(); 

     Scanner scan = new Scanner(sentence); 

     while(scan.hasNext()) 
     { 
      result += translateWord(scan.next()); 
      result += " "; 
     } 

     return result; 
    } 

    //----------------------------------------------------------------------- 
    //Translates one word into Pig Latin. If the word begins with a vowel, 
    //the suffix 'yay' is appended to the word. Otherwise, the first letter 
    //or two are moved to the end of the word, and 'ay' is appended. 
    //----------------------------------------------------------------------- 
    private static String translateWord(String word) 
    { 
     String result = ""; 

     if(beginsWithVowel(word)) 
      result = word + "yay"; 
     else 
      if(beginsWithBlend(word)) 
       result = word.substring(2) + word.substring(0,2) + "ay"; 
      else 
       result = word.substring(1) + word.charAt(0) + "ay"; 

     return result; 

    } 

    //-------------------------------------------------------------------- 
    //Determines if the specified word begins with a vowel. 
    //-------------------------------------------------------------------- 
    private static boolean beginsWithVowel(String word) 
    { 
     String vowels = "aeiou"; 

     char letter = word.charAt(0); 

     return(vowels.indexOf(letter) != -1); 
    } 

    //------------------------------------------------------------------------ 
    //Determines if the specified word begins with a particular two-character 
    //consonant blend. 
    //------------------------------------------------------------------------ 
    private static boolean beginsWithBlend(String word) 
    { 
     return(word.startsWith("bl") || word.startsWith("sc") || 
       word.startsWith("br") || word.startsWith("sh") || 
       word.startsWith("ch") || word.startsWith("sk") || 
       word.startsWith("cl") || word.startsWith("sl") || 
       word.startsWith("cr") || word.startsWith("sn") || 
       word.startsWith("dr") || word.startsWith("sm") || 
       word.startsWith("dw") || word.startsWith("sp") || 
       word.startsWith("fl") || word.startsWith("sq") || 
       word.startsWith("fr") || word.startsWith("st") || 
       word.startsWith("gl") || word.startsWith("sw") || 
       word.startsWith("gr") || word.startsWith("th") || 
       word.startsWith("kl") || word.startsWith("tr") || 
       word.startsWith("ph") || word.startsWith("tw") || 
       word.startsWith("pl") || word.startsWith("wh") || 
       word.startsWith("pr") || word.startsWith("wr")); 

    } 







} 
+0

什麼是你的問題? – 2015-02-06 16:05:29

+0

參數:後像'translateWord( 「foobar的」)',** **中的方法'translateWord','word'具有值 「foobar的」 呼叫。一些閱讀:http://docs.oracle.com/javase/tutorial/java/javaOO/arguments.html – 2015-02-06 16:07:10

回答

1

作爲Javadoc所示,next()方法產生回一個字符串。所述translateWord(String word)接受一個字符串作爲參數,所以任何其中由一天結束解析爲String可以被傳遞給該方法。

因此,這條線:translateWord(scan.next());本質上是短手爲下面的代碼:

String scannerInput = scan.next(); 
translateWord(scannerInput); 

給定一個字符串,This is a test,掃描儀將返回Thisisatest。所以這些字符串將被輸入到您的translateWord方法中。

0

的「翻譯」的返回值永遠不會在「translateWorld」使用。 工作原理:

    在翻譯你把每一項工作從一個句子
  • 這個詞的時候是分離,它進入translateWord
  • translateWord進行轉型,並給予transformated詞翻譯
  • 每個翻譯單詞連接在一個新句子中

翻譯的返回值將用於另一個方法或另一個類。

相關問題