理解Java方法
所以,我对Java非常陌生,我有一个暑期大学课程,我们学习函数或方法,我在理解它们时有点困难 我在实验室遇到了一个小问题: 编写一个名为maxOftree的方法,该方法接受三个整数 参数,并返回三个参数中最大的。” 这就是我目前所知道的,但我不确定出了什么问题。我在最后添加了print语句,因为我运行它时没有得到返回值,但现在我得到了错误,它没有编译。如果你能帮我多了解一些方法,我将不胜感激。例如,参数如何工作和调用,函数调用中包含的内容是否正确以及如何工作。当我通读这些材料时,我感到很困惑,希望能用更通俗的语言来解释。谢谢你的帮助,这是我到目前为止得到的理解Java方法,java,methods,Java,Methods,所以,我对Java非常陌生,我有一个暑期大学课程,我们学习函数或方法,我在理解它们时有点困难 我在实验室遇到了一个小问题: 编写一个名为maxOftree的方法,该方法接受三个整数 参数,并返回三个参数中最大的。” 这就是我目前所知道的,但我不确定出了什么问题。我在最后添加了print语句,因为我运行它时没有得到返回值,但现在我得到了错误,它没有编译。如果你能帮我多了解一些方法,我将不胜感激。例如,参数如何工作和调用,函数调用中包含的内容是否正确以及如何工作。当我通读这些材料时,我感到很困惑,希
public class Test {
public static void main(String[] args) {
int a = 2, b = 3, c = 4;
int maxValue = max3(a, b, c);
}
public static int max3(int a, int b, int c) {
int max = a;
if (b > max) max = b;
if (c > max) max = c;
return max;
System.out.println(max);
}
}
以下是我收到的错误,以防万一
Test.java:16: error: unreachable statement
System.out.println(max);
^
Test.java:17: error: missing return statement
}
^
2 errors
在return语句之后不能有语句,或者更准确地说,在return语句(例如println)之后的语句imediatelly永远不能执行,因此是一个错误 println应该在return语句之前
public static int max3(int a, int b, int c) {
int max = a;
if (b > max) max = b;
if (c > max) max = c;
System.out.println(max);
return max;
}
你需要把
System.out.println(max);
之前:
return max;
原因是您的
return
无条件地结束函数,因此编译器不会到达println
,从而导致编译错误。问题是编译器检测到执行永远不会到达System.out.println
行,因此拒绝编译。行返回最大值代码>有效地结束了该方法,因此在此之后将不再运行任何操作
您应该移动返回max
到System.out.println
行下方。交换最后两行(return
和System
)。应该是这样的,return max
语句应该是方法中的最后一行,如果要打印内容,因为return
语句返回或调用调用调用他的行,所以您的print语句无法到达
public static int max3(int a, int b, int c) {
int max = a;
if (b > max) max = b;
if (c > max) max = c;
System.out.println(max);
return max;
}
在return
后面有一个System.out.println()
语句return
结束该方法,因此System.out.println()
将永远不会发生,因为该方法将结束。这就是为什么会出现错误。将系统.out.println()置于返回之前
:
public static int max3(int a, int b, int c) {
int max = a;
if (b > max) max = b;
if (c > max) max = c;
System.out.println(max);
return max;
}
您提供的代码的问题是,在使用return语句之后,您试图打印到控制台。这会导致程序永远无法到达该行:System.out.println(max)代码>如前所述,在返回某个内容后,该方法将结束。因此,方法最后一行中的输出将不会执行,因此请删除它。
在方法外部写入以下内容时,可以打印方法的返回值:
System.out.println("highest value:" + max3(a,b,c));
现在,这3个值被赋予了一个方法,这个方法现在可以用它们做点什么了。完成计算后,该方法返回一个值,例如,现在可以将该值打印到控制台 我建议您将那些if
语句更改为一个简单的for
循环和简单的int[]
向量。这个解决方案更加优雅和灵活。此外,您已初始化并且未在任何地方使用int maxValue=max3(a、b、c)代码>在您的代码中
public class Demo {
public static void main(String args[]) {
int[] numbers = new int[] {2, 3, 4};
System.out.println(maxValue(numbers));
}
public static int maxValue(int[] n) {
int max = n[0];
for (int i = 1; i < n.length; i++) {
if (n[i] > max) {
max = n[i];
}
}
return max;
}
}
调用setValue(5)
后,someField
对象的值将为5
。但是,您必须记住类型兼容性,因此在这种情况下,someField
不能是例如String
type
上面提到的第二种方法类型,即返回方法非常有用,当您希望该方法为您提供输出时,例如在对您提供给您的方法的数据进行某些操作的结果中。但是当然没有必要为返回方法提供输入。无论如何,返回方法的使用可以如下所示:
/* method declaration */
void setValue(int value) {
someField = value;
}
/* method invocation */
setValue(5);
/* method returns text You've given to it */
String getText(String text) {
return text;
}
/* method returns result of addition of three given int's */
int calculate(int a, int b, int c) {
return a + b + c;
}
/* method return a random number */
int createRandomNumber() {
Random random = new Random();
return random.nextInt();
}
你可以很容易地看到,有足够的空间进行即兴创作。总之,void方法可以处理给定的对象,例如,可以设置值和执行其他操作,但它们不会返回任何可以处理的直接结果返回方法,从另一方面来说,提供物理结果,您可以在进一步的操作中使用,甚至在其他方法中使用,例如:
import java.util.Random;
public class Demo {
private static int someValue;
public static void main(String args[]) {
setValue(calculate(
createRandomNumber(),
createRandomNumber(),
createRandomNumber()));
System.out.println(someValue);
}
public static void setValue(int value) {
someValue = value;
}
public static int calculate(int a, int b, int c) {
return a + b + c;
}
public static int createRandomNumber() {
Random random = new Random();
return random.nextInt();
}
}
哦,我忘了,这是我收到的错误,以防万一。。。Test.java:16:错误:无法访问语句System.out.println(max);^Test.java:17:error:missing return语句}^2 errors一旦到达return
语句,该方法将退出。因此,println
将不会执行。就风格而言,我认为最好将println放在main方法中,而不是放在max3方法中。同意。获得返回到maxValue
的值后,在后面添加println()语句。您还需要更改变量名System.out.println(maxValue)代码>那么,除了print语句之外,我是否正确创建了该方法?鉴于我在这方面有点幸运,你能准确地解释一下函数是如何工作的吗?另外,我认为return max在运行它时并没有实际显示三个int中的max int?为此我需要打印报表?这不是一个好的表达方式。如果返回是有条件的,那么返回后可能会有语句。哇,你们太快了!感谢所有的帮助,我将通读所有的评论,看看是否还有问题。@user3862586,没问题。我有点不清楚的是调用函数时为什么需要maxValue?我只是补充了一下,因为我见过其他的方法。为什么不(像python)我只是调用方法li