编译此代码时会出现以下消息。
ExtractChars(java.lang.String,int)in 问题2不能应用于()
我应该修理什么?
感谢。
import java.util.Scanner;
public class Question2
{
public static void main (String[] args)
{
ExtractChars();
}
public static String ExtractChars(String sOrg, int startPos)
{
Scanner scan = new Scanner (System.in);
String value = "";
System.out.print("Enter a string: ");
sOrg = scan.next();
System.out.print("/nEnter an integer: ");
startPos = scan.nextInt();
if (sOrg.length()<=startPos)
{
value = "";
}
else
{
for (int i=startPos; i<sOrg.length();i=i+2)
{
value = value + sOrg.charAt(i);
}
}
return value;
}
}
答案 0 :(得分:5)
这是因为函数ExtractChars
需要两个参数但你没有传递任何参数。
修改强>
看起来您正在阅读输入sOrg
和startPos
,并且不需要将它们作为参数传递,您可以将它们作为局部变量。
所以改变:
public static String ExtractChars(String sOrg, int startPos)
{
....
到
public static String ExtractChars()
{
String sOrg;
int startPos;
....
此外,您只是放弃ExtractChars
中函数main
的返回值。您可能希望将函数返回的提取字符(作为字符串)打印为:
System.out.println("Extracted Characters = " + ExtractChars());
在你的主要代替
ExtractChars();
答案 1 :(得分:1)
你已经定义了你的方法以期望两个参数,但你真的使用它们就好像它们是局部变量一样,提示用户为它们输入值。
您应该重写一下这样的方法
public static String ExtractChars()
{
String sOrg;
int startPos;
Scanner scan = new Scanner (System.in);
String value = "";
System.out.print("Enter a string: ");
sOrg = scan.next();
System.out.print("/nEnter an integer: ");
startPos = scan.nextInt();
if (sOrg.length()<=startPos)
{
value = "";
}
else
{
for (int i=startPos; i<sOrg.length();i=i+2)
{
value = value + sOrg.charAt(i);
}
}
return value;
}
这样sOrg和startPos就是方法中的局部变量而不是它的参数。
然后编译方法调用。
你也没有对这个函数的返回值做任何事情,所以似乎没有任何事情发生。但是这可能会让你走上正轨。
答案 2 :(得分:0)
调用ExtractChars时必须使用参数。 ExtractChars想要一个String和一个int。当你打电话给你时,你什么也没有通过。
答案 3 :(得分:0)
它的论点。你正在调用一个需要2个参数的函数。编译器生成的消息指向那个。