[英]How to invoke method in another class and return value from it in java?
我创建了两个类。 在第一个类中,我尝试在另一个类中创建一个方法,以返回一个带有命令的值,以在控制台上输出值。 但是我收到一个错误,指出存在不兼容的类型。 这是我创建的两个类,我想用它来制作一个计算器:第一个类
class calc1
{
public static int num1; //first number variable
public static int num2; //Second number variable
public static String op; //Operatior variable
public static void main(String[] args) //
{
num1 = Integer.parseInt(args[0]);
num2 = Integer.parseInt(args[2]);
op = args[1];
calc3.calculate(op); //Calling method from the second class with an arugement.
}
}
这是第二个:
class calc3
{
public static int calculate(String ops)
{
switch(ops) //I believe that ops stores value from op variable in the first class.
{
case "+":
{
int num = calc1.num1 + calc1.num2;
return (System.out.println(num));
}
}
}
}
这是我从编译器获得的错误消息:
Desktop$ javac calc1.java
./calc3.java:10: error: incompatible types
return (System.out.println(num));
^
required: int
found: void
1 error
PS。 我想知道我正在做的过程是否称为重载方法?
System.out.println
返回void
。 你的“calculate”方法返回int
。
如果要打印数字并在方法中返回,则应将代码更改为:
System.out.println(num);
return num;
PS:你似乎没有在那里重载任何方法。
在你下面的课程中
class calc3
{
public static int calculate(String ops)
{
switch(ops) //I believe that ops stores value from op variable in the first class.
{
case "+":
{
int num = calc1.num1 + calc1.num2;
return (System.out.println(num));
}
}
}
}
您将返回System.out.println(num)
而您应该只返回num
calc3.calculate()
期望int作为返回类型。
随着您的进步并开始进行大量编码,您可能希望使用Eclipse或NetBeans等IDE来帮助您更好地调试编译错误和运行时错误。
你需要了解java的某些基本概念
System.out.println(num);
声明只是打印而不返回任何内容。
所以你的calculate方法在返回类型为int时不返回任何空格。
你需要返回一个也应该在条件语句之外的int值(当然你也可以在条件语句中返回)但是为了满足编译器,应该至少有一个外部条件语句,比如viz。
只有这不起作用
System.out.println(num);
return num;
确保你还有一个返回类似语句( return num;
)的侧开关块。
以下是一些评论:
在这种情况下,编译器消息非常清楚。 正如Mena所指出的, System.Out.Println()
是一个不返回任何内容的函数( void
)。 但是你的calculate
函数应该返回一个int
。
你需要返回一个值,正如其他人所指出的那样
int num = calc1.num1 + calc1.num2; return (System.out.println(num));
可能成为:
return calc1.num1 + calc1.num2;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.