Java.Eclipse在声明带有参数

时间:2015-05-19 09:21:49

标签: java eclipse

以下是我的代码,我正在使用Eclipse IDE。

所以我创建了两个类,其中一个名为Mainclass,另一个名为Testclass

以下代码工作正常,但是如果我在calculate方法之外使用int或integer类型声明类型为整数的ij变量,并且只在calculate方法中写入变量名&# 39; s括号然后它显示错误。我想知道为什么会发生这种情况,而在我的原始代码之下是我上面描述的改变的代码,它显示了荒谬的错误。

[原始代码正常]

package calculation;

public class Mainclass {

    public static void main(String[] args) {
        Testclass obj=new Testclass();
        System.out.println(obj.calculate(10,20));
    }
}


public class Testclass {
    int a;
    public int calculate(int i, int j) {
        a=i+j;  
        return a;
    }      
} 

[/原始代码正常]

[此代码不能正常工作]

package calculation;

public class Mainclass {

    public static void main(String[] args) {
        Testclass obj=new Testclass();
        System.out.println(obj.calculate(10,20));
    }

}



 public class Testclass {
     int a;
     int i;
     int j;
     public int calculate(i,j) {
          a=i+j;    
          return a;
     }      
 } 

[/此代码不能正常工作]

为什么我们必须使用'来声明变量?在方法的括号内键入但不在其外部。

先谢谢。

5 个答案:

答案 0 :(得分:1)

在Java中声明参数的正确方法是

public int calculate(int i,int j){}

提供传递给方法的参数的数据类型

你也可以这样做

public class Testclass {
    int a;
    int i;
    int j;
    public int calculate(int i, int j) {
        a=i+j;
        return a;
    }      
} 

这将编译好。但请记住传递的参数i & j,即方法calculate中的局部变量与实例变量i & j无关。

答案 1 :(得分:1)

public class Testclass {
          int a;
          int i;
          int j;
          public int calculate(i,j) {
          a=i+j;    
          return a;
          }      
          } 

在方法参数中,您声明局部变量,它们与实例变量i和j不同。

这意味着:你必须用类型声明它们。此时,编译器不知道那些本地i和j是什么,所以他不知道如何处理它们。

public class Testclass {
          int a;
          int i;
          int j;
          public int calculate(int i, int j) {
          a=i+j;    
          return a;
          }      
          }

这将解决您的问题,但请记住:方法中使用的i和j是局部变量,而不是实例成员。

答案 2 :(得分:1)

这是Java编程的一项要求,在定义方法时,您需要指定该方法所具有的参数类型。参数对应于方法所期望的基元或类/接口类型的数据类型。

答案 3 :(得分:1)

这称为方法签名

public int calculate(int i, int j)

因此,无论何时声明方法,都必须定义方法作为参数的变量的数据类型。

更新:

当你说已经定义了像

这样的变量时
class Testclass
{
    int a;
    int i;  //this is an instance variable
    int j;  //this is an instance variable

    public int calculate(i, j)  // you have to define the type here, method signature does not know what your instance variables are
    {
        a = i + j;
        return a;
    }
}

答案 4 :(得分:1)

您的代码中存在一些问题:

  • 您忘记声明方法calculate的参数类型。将参数传递给方法时,需要指定其类型。 Java要求所有变量都具有声明的类型。
  • 除了内部类之外,每个类都必须保留在其文件中。
  • 如果要从静态方法创建TestClass的实例,则必须将TestClass声明为static。通过这种方式,它不需要引用MainClass
  • 的实例

如果要在同一个文件(MainClass.java)中声明这两个类:

package calculation;

public class Mainclass {

public static class TestClass {
    int a;

    public int calculate(int i, int j) {
        a = i + j;
        return a;
    }
}

public static void main(String[] args) {
    TestClass obj = new TestClass();
    System.out.println(obj.calculate(10, 20));

}


}