如何使用类方法,可以将存储的数据传递给同一个类中的其他方法

时间:2015-02-06 16:00:52

标签: java

我从我正在学习的一本书中读到了这门课程。但是这本书没有准确地解释如何在translate方法中使用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"));

    }







}   

2 个答案:

答案 0 :(得分:1)

正如Javadoc所示,next()方法会返回一个字符串。 translateWord(String word)接受一个字符串作为参数,因此在一天结束时解析为String的任何内容都可以传递给此方法。

因此,这一行:translateWord(scan.next());基本上是以下代码的简写:

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

根据字符串This is a test,扫描程序将返回Thisisatest。因此,这些字符串将被输入您的translateWord方法。

答案 1 :(得分:0)

'translate'的返回值从未在'translateWorld'中使用。 工作原理:

  • 在翻译中你从句子中取出每件作品
  • 当单词被隔离时,它会转换为translateWord
  • translateWord进行转换并将转换后的单词翻译
  • 每个翻译的单词在新句子中连接

translate的返回值将用于另一个方法或另一个类。