我的程序如何知道要使用什么字符串和数组?这是我对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;
}
您将在以下行中指定所有这些内容:语句=deletePun(语句,ch1,ch2,ch3);这使得语句等于传递语句的方法调用deletePun(String s,char... arr)的结果,ch1
,ch2
和ch3
。
直接答案是:它通过call语句中参数的位置知道这一点。参数被推送到调用堆栈上的顺序与您在方法调用期间传递它们的顺序相同。然后,被调用的方法将它们从堆栈中弹出,并按位置将它们绑定到正式的方法参数(您的deletePun
定义中的参数)。
等到以后再回答:如果你在做comp-sci,你可能会在不久的将来做一个机器级语言的介绍,也就是汇编程序。我可以向您保证,关于像Java这样的高级语言如何工作的一切都将变得更加清晰。
方法参数的顺序是如何将值传递到方法中。您可以定义该方法:
public static String deletePun(String s, char... arr)
并称之为:
sentence = deletePun(sentence, ch1, ch2, ch3);
第一个参数是一个String
,您传入了语句
的值,因此s=语句
。其余的都是字符,然后转换成char[]
,arr=new char[]{ch1, ch2, ch3}
。
问题内容: 说我有Method1(void),Method2(void)… 有什么方法可以选择其中一个带有变量的方法吗? 问题答案: 使用反射:
只是在列表下面迭代 以上三个迭代有什么区别
我想调用一个名称(带或不带圆括号和参数)存储在字符串变量中的方法,并使用该变量调用该方法。 到目前为止,我发现在Java中,如果您这样做: 这将调用方法。但我认为这是不推荐的。所以,我的问题是: 谢了。
在JAVA8中,可以用lambda表达式替换内部类。 jvm怎么知道,这个lambda应该重写正确的方法?在上述示例中,它们是和。
我遇到了一些问题,AppEngine抱怨我的代码有Java1.8方法,而AppEngine需要Java1.7。下面是错误跟踪。我不知道该怎么修理它。
从…起http://docs.oracle.com/javase/tutorial/essential/concurrency/imstrat.html : 不要提供“setter”方法——修改字段或字段引用的对象的方法。使所有字段都是最终的和私有的。不要允许子类重写方法。最简单的方法是将类声明为最终的。一个更复杂的方法是使构造函数私有,并在工厂方法中构造实例。如果实例字段包括对可变对象的引用,不