[英]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
需要兩個參數,但是您沒有傳遞任何參數。
編輯:
看起來您正在讀取輸入sOrg
和startPos
並且不需要將它們作為參數傳遞,可以將它們設置為局部變量。
所以改變:
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.