Статический метод Java не может скомпилировать - PullRequest
0 голосов
/ 22 октября 2010

следующее сообщение появляется, когда я компилирую этот код.

ExtractChars (java.lang.String, int) в Вопрос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 ]

5 голосов
/ 22 октября 2010

Это потому, что функция 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 голос
/ 22 октября 2010

Вы определили свой метод для ожидания двух аргументов, но вы действительно используете их, как если бы они были локальными переменными, предлагая пользователю ввести значения для них.

Вы, вероятно, должны переписать свой метод примерно так

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 являются локальными переменными в вашем методе вместо аргументов для него.

Вызов метода, если он у вас есть, скомпилируется.

Вы также ничего не делаете с возвращаемым значением этой функции, поэтому может показаться, что ничего не происходит. Но это может помочь вам.

0 голосов
/ 22 октября 2010

это аргументы.Вы вызываете функцию, которая ожидает 2 аргумента.Компилятор сгенерировал сообщение как минимум указывает на это.

0 голосов
/ 22 октября 2010

Вы должны использовать аргументы при вызове ExtractChars.ExtractChars хочет String и int.Когда вы звоните, вы ничего не передаете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...