[英]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
ch1
, ch2
和ch3
的方法deletePun(String s, char... arr)
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.