该方法如何知道我正在使用的变量? [Java newb]

时间:2014-03-31 15:32:51

标签: java arrays string methods

我的程序如何知道要使用的String和数组?这是我的comp sci简介中的代码。我们只关注Java。我让用户输入一个句子,然后通过我创建的方法运行该句子,从句子中删除某些字符,然后将其返回。

用户使用扫描仪kbd填充字符串句子,ch1,ch2,ch3从扫描仪填充。

当我写方法时

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

它如何知道sentence = sch1, 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;
}

3 个答案:

答案 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 }

答案 1 :(得分:0)

直接答案:它通过调用语句中参数的位置来了解这一点。参数以与在方法调用期间传递它们的顺序相同的方式被推送到调用堆栈。然后被调用的方法从堆栈中弹出它们,并按位置将它们绑定到正式的方法参数(deletePun定义的parantheses中的内容)。

等待到后来的回答:如果你正在进行comp sci,你可能会对机器级语言a.k.a.汇编程序进行介绍,对未来不会太远。我可以向你保证,像Java这样的高级语言工作的一切都会变得更加清晰。

答案 2 :(得分:0)

您在sentence = deletePun(sentence, ch1, ch2, ch3);行中指定了所有这些内容 这使得句子等于您传递deletePun(String s, char... arr)sentencech1ch2的方法调用ch3的结果。