以下是我的代码,我正在使用Eclipse IDE。
所以我创建了两个类,其中一个名为Mainclass
,另一个名为Testclass
。
以下代码工作正常,但是如果我在calculate方法之外使用int或integer类型声明类型为整数的i
和j
变量,并且只在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;
}
}
[/此代码不能正常工作]
为什么我们必须使用'来声明变量?在方法的括号内键入但不在其外部。
先谢谢。
答案 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要求所有变量都具有声明的类型。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));
}
}