2010-10-21 81 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指向。