簡體   English   中英

Java靜態方法無法編譯

[英]Java static method can't compile

當我編譯此代碼時,將出現以下信息。

Question2中的ExtractChars(java.lang.String,int)無法應用於()

我該怎么解決?

謝謝。

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

這是因為函數ExtractChars需要兩個參數,但是您沒有傳遞任何參數。

編輯:

看起來您正在讀取輸入sOrgstartPos並且不需要將它們作為參數傳遞,可以將它們設置為局部變量。

所以改變:

public static String ExtractChars(String sOrg, int startPos)
{
 ....

public static String ExtractChars()
{
  String sOrg;
  int startPos;
  ....

同樣,您只是在main丟棄函數ExtractChars的返回值。 您可能希望將函數返回的提取字符(作為字符串)打印為:

System.out.println("Extracted Characters = " + ExtractChars());

在您的主要位置

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

因此sOrg和startPos是方法中的局部變量,而不是其參數。

您將擁有的方法調用將進行編譯。

您也不會對該函數的返回值做任何事情,因此似乎沒有任何反應。 但這可能會讓您步入正軌。

調用ExtractChars時必須使用參數。 ExtractChars需要一個String和一個int。 調用它時,您什么也沒傳遞。

它的論點。 您正在調用一個需要2個參數的函數。 編譯器生成的消息至少指向該點。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM