[英]Why do I need to declare a variable in main if it is a return value in Java?
(很抱歉,如果是這樣的初學者。我在介紹類中。)為什么Java告訴我在返回值的情況下在main方法中將“ piglatin”聲明並初始化為變量? 我以為一旦在pigLatinWord中對其進行了初始化,就不需要在main中對其進行重新初始化了嗎?
import java.util.*;
public class PigLatin {
//This program prints our the pig latin version of words.
public static void main(String[] args) {
Scanner console = new Scanner(System.in);
String word;
System.out.print("Enter a word: ");
word = console.next();
pigLatinWord(word);
System.out.println(word + " in pig latin is " + piglatin);
}
//translates words starting with vowels, "th," consonants into piglatin
public static String pigLatinWord (String word) {
char c = word.charAt(0);
String piglatin;
if (c == 'a' || c == 'e' || c == 'i' ||
c == 'o' || c == 'u'){ //if word starts with a vowel
piglatin = word + "-hay";
} else if (word.startsWith("th")) { //if word starts with "th"
piglatin = word.substring(2) + "-thay";
} else {
piglatin = word.substring(1) + "-" + word.charAt(0) + "ay";
}
return piglatin;
}
}
大概當你寫的時候
pigLatinWord(word);
您的意思是將此方法的返回值分配給某個變量。 具體來說,您可能想要:
String piglatin = pigLatinWord(word); //Creates a String variable reference to the return value of this method
只有這樣,您才能在main
方法中引用這樣的變量。
當您System.out.println(word + " in pig latin is " + piglatin);
中編寫System.out.println(word + " in pig latin is " + piglatin);
,編譯器將期望在主方法中聲明piglatin
變量,但不會在其中聲明它。 因此,它的拋出錯誤。
你可以寫 :
String piglatin = pigLatinWord(word);
您可以像這樣直接打印返回的pigLatinWord:
System.out.println(word + " in pig latin is " + pigLatinWord(word));
錯誤原因:變量'piglatin'的范圍僅限於pigLatinWord(String word)方法。 因此,您不能在pigLatinWord()方法之外使用此變量。
如果要訪問pigLatinWord()方法返回的值,則可以在main()方法中聲明一個新變量以存儲返回的值並使用它進行打印:
String translatedPigLatinWord = pigLatinWord(word);
System.out.println(word + " in pig latin is " + translatedPigLatinWord);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.