Java静态方法无法编译

时间:2010-10-21 23:02:51

标签: java function methods static compiler-errors

编译此代码时会出现以下消息。

  

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;
    }
}

4 个答案:

答案 0 :(得分:5)

这是因为函数ExtractChars需要两个参数但你没有传递任何参数。

修改

看起来您正在阅读输入sOrgstartPos,并且不需要将它们作为参数传递,您可以将它们作为局部变量。

所以改变:

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个参数的函数。编译器生成的消息指向那个。