簡體   English   中英

該方法如何知道我正在使用什么變量? [Java newb]

[英]How does the method know what variable I'm using? [Java newb]

我的程序如何知道要使用的字符串和數組? 這是我介紹comp sci的代碼。 我們只關注Java。 我讓用戶輸入一個句子,然后通過我創建的方法運行該句子,以從句子中刪除某些字符,然后返回它。

用戶使用掃描儀kbd填充String句子,然后從掃描儀填充ch1,ch2,ch3。

當我寫方法時

public static String deletePun(String s, char... arr)

它怎么知道sentence = s ,而ch1, ch2, ch3變成char... arr

package multidimarrayproject;

import java.util.*;

public class multidemo {

    public static void main(String[] args) {


        Scanner kbd = new Scanner(System.in);
        String sentence = "";
        char ch1, ch2, ch3;



        System.out.println("Enter a sentence");
        sentence = kbd.nextLine();
        System.out.println("Enter 3 characters to be removed");
        ch1 = kbd.next().charAt(0);
        ch2 = kbd.next().charAt(0);
        ch3 = kbd.next().charAt(0);
        sentence = deletePun(sentence, ch1, ch2, ch3);
        System.out.println(sentence);









        public static String deletePun(String s, char... arr){      //goes through an removes
                                                            //removes chars entered
    for(int i = 0; i < arr.length; i++)                     //by the user
    {
        int location = s.indexOf(arr[i]);
        while (location >= 0)
        {
            s = s.substring(0, location) + s.substring(location+1, s.length());
            location = s.indexOf(arr[i]);
        }
    }

    return s;
}

方法參數的順序是如何將值傳遞到方法中。 您定義方法:

public static String deletePun(String s, char... arr)

並稱之為:

sentence = deletePun(sentence, ch1, ch2, ch3);

第一個參數是String ,您傳入的是sentence的值,所以s = sentence 其余所有字符均轉換為char[]arr = new char[]{ ch1, ch2, ch3 }

即時答案:它通過調用語句中參數的位置知道這一點。 參數按照在方法調用期間傳遞參數的順序推入調用堆棧。 然后,被調用的方法將它們從堆棧中彈出,然后按位置將它們綁定到正式的方法參數(在deletePun定義的括號中是什么)。

等待直到最后的答案:如果您正在執行comp sci,則可能會在不久的將來對機器級語言(也稱為匯編器)進行介紹。 我可以向您保證,關於Java這樣的高級語言如何工作的所有知識到那時都會變得更加清晰。

您需要在sentence = deletePun(sentence, ch1, ch2, ch3);指定所有這些內容sentence = deletePun(sentence, ch1, ch2, ch3); 這使句子等於您要向其中傳遞sentence ch1ch2ch3的方法deletePun(String s, char... arr)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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