2014-03-31 86 views
0

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

用戶使用掃描儀kbd填充字符串句子,ch1,ch2,ch3從掃描儀填充。

當我寫的方法

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

它是如何知道sentence = sch1, ch2, ch3char... 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; 
} 
+0

你在找什麼樣的答案?這就是參數綁定的工作原理。 –

+0

因爲您在調用方法時按順序將這些變量作爲參數傳遞。 –

回答

0

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

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 }的所有字符。

0

直接回答:它通過調用語句中參數的位置知道這一點。按照您在方法調用期間傳遞參數的順序將參數壓入調用堆棧。然後被調用的方法將它們從堆棧中彈出並按位置將它們綁定到正式的方法參數(你的deletePun定義的邊界)。

等待一段時間的答案:如果你正在做comp sci,那麼你可能會對機器級語言,又名彙編語言進行介紹,不會太過於遙遠。我可以向你保證,關於Java這樣的高級語言如何工作的一切將變得更加清晰。

0

你指定在該行sentence = deletePun(sentence, ch1, ch2, ch3); 所有這些事情這使得句話等於方法調用deletePun(String s, char... arr)你傳遞sentencech1ch2ch3成的結果。

相關問題