我对我在这里做错了什么很困惑。有人在乎解释吗?它编译并运行,但我在第50行(即返回行)时遇到错误。
此外,如果我将下面的代码更改为" int max =(number1,number2)"我得到了无法找到符号的错误。任何帮助将不胜感激。
rand() % max + 1
int max = max(num1, num2);
答案 0 :(得分:2)
使用int max = Math.max(num1, num2)
这将返回最大数字。
答案 1 :(得分:1)
public static int max(int num1,int num2){
int max = max(num1, num2);
return max;
}
此方法永远不会完成。这将一次又一次地调用max,直到你的堆栈空间不足为止。当你这样做时,它会引发堆栈溢出错误。你应该把它改成
public static int max(int num1,int num2){
int max = num1>num2?num1:numb2; // return the highest number.
return max;
}
编辑:既然你提到你是编程新手,那么让我补充一些细节。如果您在方法A中并且调用方法B,则会保留堆栈段中的一些空间,以便控件知道方法A中的行位置,以便在完成方法B后继续执行。在您的情况下,max方法一次又一次地调用max方法。这直接意味着堆栈段中越来越多的空间被保留用于每个方法调用。在某些时候,它会耗尽堆栈内存中的可用空间,最终会出现这样的StackOverflow问题。
通常,在大多数情况下,任何调用自身而不修改输入的方法都是红旗。这是你的max方法的情况。
答案 2 :(得分:0)
在你的max(int num1,int num2)中没有逻辑,它只是调用自身所以永远不会结束:
使用如下:
import java.io.*;
import java.util.Scanner;
public class MethodLab {
public static void main(String[] args) {
// variable declarations for part 1
String title;
String firstName;
String lastName;
Scanner in = new Scanner(System.in);
// prompt for input for part 1
System.out.print("Enter a title:");
title = in.next();
System.out.print("Enter your first name:");
firstName = in.next();
System.out.print("Enter a your last name:");
lastName = in.next();
// call the method for part 1
greeting(title, firstName, lastName);
// variable declarations for part 2
int number1;
int number2;
// user prompts for part 2
System.out.print("Enter first number:");
number1 = in.nextInt();
System.out.print("Enter second number:");
number2 = in.nextInt();
// call the method for part 2 inside the println statement
System.out.println("The largest number is " + max(number1, number2));
}
/******************** greeting method goes here*********************/
public static void greeting(String proper, String fname, String lname){
System.out.println();
System.out.printf("Dear " + proper +" "+ fname + " "+ lname);
System.out.println();
}
/***********************end of method*************************/
/******************** max method goes here*********************/
public static int max(int num1,int num2){
return num1 > num2 ? num1 : num2;
}