2010-10-21 212 views
0

當我編譯此代碼時,出現以下信息。Java靜態方法無法編譯

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

從你的main:ExtractChars(); 它是如何聲明的:public static String ExtractChars(String sOrg,int startPos) 它們不匹配。 – DwB 2010-10-21 23:06:40

+0

可能的[Java教程]重複(http://stackoverflow.com/questions/167179/java-tutorial) – 2010-10-21 23:24:03

回答

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(); 
+0

我該怎麼傳遞它?對不起,我是初學者。 – 2010-10-21 23:11:36

0

你當你調用ExtractChars使用的參數。 ExtractChars需要一個String和一個int。當你打電話時,你什麼也沒有通過。

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

使索爾格和startPos在你的方法,而不是爭論它的局部變量。

然後編譯您所擁有的方法調用。

你也沒有對這個函數的返回值做任何事情,所以它可能看起來沒有任何事情發生。但這可能會讓你走上正路。

0

其論據。你正在調用一個需要2個參數的函數。編譯器生成的消息atlest指向。