我从我正在学习的一本书中读到了这门课程。但是这本书没有准确地解释如何在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"));
}
}
答案 0 :(得分:1)
正如Javadoc
所示,next()
方法会返回一个字符串。 translateWord(String word)
接受一个字符串作为参数,因此在一天结束时解析为String
的任何内容都可以传递给此方法。
因此,这一行:translateWord(scan.next());
基本上是以下代码的简写:
String scannerInput = scan.next();
translateWord(scannerInput);
根据字符串This is a test
,扫描程序将返回This
,is
,a
,test
。因此,这些字符串将被输入您的translateWord
方法。
答案 1 :(得分:0)
'translate'的返回值从未在'translateWorld'中使用。 工作原理:
translate的返回值将用于另一个方法或另一个类。