当前位置: 首页 > 知识库问答 >
问题:

该方法如何知道我使用的变量?[Java新手]

令狐泓
2023-03-14

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

用户使用扫描器kbd填充字符串句子,然后从扫描器中填充ch1、ch2、ch3。

当我写方法的时候

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

它如何知道语句=s,以及ch1、ch2、ch3进入字符。。。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个答案

都建树
2023-03-14

您将在以下行中指定所有这些内容:语句=deletePun(语句,ch1,ch2,ch3);这使得语句等于传递语句的方法调用deletePun(String s,char... arr)的结果,ch1ch2ch3

章学义
2023-03-14

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

等到以后再回答:如果你在做comp-sci,你可能会在不久的将来做一个机器级语言的介绍,也就是汇编程序。我可以向您保证,关于像Java这样的高级语言如何工作的一切都将变得更加清晰。

谭向晨
2023-03-14

方法参数的顺序是如何将值传递到方法中。您可以定义该方法:

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

并称之为:

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

第一个参数是一个String,您传入了语句的值,因此s=语句。其余的都是字符,然后转换成char[]arr=new char[]{ch1, ch2, ch3}

 类似资料: