簡體   English   中英

如果Java中有返回值,為什么要在main中聲明一個變量?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM