代码无法 Return 来自方法的整数值 (Java/Eclipse)
Code Fails to Return Integer Value From Method (Java/Eclipse)
过去两天我一直在搜索这个网站和其他网站,因此我意识到与这个问题类似的大量预先存在的问题。然而,三四个星期前才开始编程,我无法理解它们中的任何一个以及它们的线程。考虑到这一点,我有一个问题,更有经验的人可能拥有一个痛苦的基本和直接的解决方案。
使用 Eclipse,我必须创建一个执行以下操作的程序:
- 读取两个数字(整数)
- 包含一个方法,该方法将两个整数作为参数,return是两者中较大的一个。
- 包含另一个从 main() 调用的方法,该方法采用 (2) 中的方法 return 将较大的数字作为参数,并且 return 是最后一位数字。
- 打印通过 (2) 和 (3) 中的方法 return 得到的两个值。
我创建的代码(如下所示)成功读取了用户输入,但未能打印出较大整数和较大整数的最后一位数字。它而是打印出“0”。这是打印到控制台的内容:
Enter First Integer: (Entered Integer)
Enter Second Integer: (Entered Integer)
Larger Integer: 0
Last Digit: 0
我相信代码应该可以正常运行,除了在方法内部确定的值没有被 returned 到 main。 Eclipse 没有显示任何错误消息,这使我相信问题出在我的 return 语句中。欢迎和期望任何建议或解决方案。谢谢。
import java.util.Scanner;
public class thursdayWork{
//Determines larger integer and returns it.
public static int processAndReturn(int int1, int int2, int answer){
answer = Math.max(int1, int2);
return answer;
}
//Determines last digit of integer and returns it.
public static int processLargerInt(int answer, int lastDigit){
if((answer >= 0) && (answer < 10))lastDigit = (answer % 10);
else if((answer >= 10) && (answer < 100))lastDigit = (answer % 100);
else if((answer >= 100) && (answer < 1000))lastDigit = (answer % 1000);
else if((answer >= 1000) && (answer < 10000))lastDigit = (answer % 10000);
else System.out.print("Pick smaller numbers.");
return lastDigit;
}
//Calls methods and prints returned values.
public static void main(String[] args){
Scanner console = new Scanner(System.in);
int int1;
int int2;
int answer = 0;
int lastDigit = 0;
System.out.print("Enter First Integer: ");
int1 = console.nextInt();
System.out.print("Enter Second Integer: ");
int2 = console.nextInt();
processAndReturn(int1, int2, answer);
System.out.println("Larger Integer: " + answer);
processLargerInt(answer, lastDigit);
System.out.print("Last Digit: " + lastDigit);
}
}
你的问题在于你如何对待processAndReturn
。 Java 按值传递基元(如 int
)。这意味着当您将 answer
赋予方法 processAndReturn
时,它实际上将变量的 value 传递给方法,因此您对其所做的任何更改都不存在你从哪里打电话来的。解决这个问题的方法是使用 processAndReturn
的 return 值
您应该将该行修改为如下所示:
int answer = processAndReturn(int1, int2);
并且您需要修改 processAndReturn
以仅接受两个参数。
看起来像这样:
static int processAndReturn(int int1, int int2){
return Math.max(int1, int2); //Note: you can just replace a call to this
// With a call to max, meaning it's pointless
}
您也需要为 processLargerInt
做类似的事情。
顺便提一下,这与 eclipse 无关。那就是你的开发环境。这与 java 有关,因此您使用什么开发它并不重要。
与其将答案作为参数传递给这两种方法,不如让方法返回答案。您应该阅读有关按值传递与按引用传递的更多信息。
public static void main(String[] args) {
// Your scanner code here.
int answer = processAndReturn(int1, int2);
System.out.println("Larger Integer: " + answer);
int lastDigit = processLargerInt(answer);
System.out.print("Last Digit: " + lastDigit);
}
public static int processAndReturn(int int1, int int2){
return Math.max(int1, int2);
}
public static int processLargerInt(int answer) {
return answer % 10;
}
过去两天我一直在搜索这个网站和其他网站,因此我意识到与这个问题类似的大量预先存在的问题。然而,三四个星期前才开始编程,我无法理解它们中的任何一个以及它们的线程。考虑到这一点,我有一个问题,更有经验的人可能拥有一个痛苦的基本和直接的解决方案。
使用 Eclipse,我必须创建一个执行以下操作的程序:
- 读取两个数字(整数)
- 包含一个方法,该方法将两个整数作为参数,return是两者中较大的一个。
- 包含另一个从 main() 调用的方法,该方法采用 (2) 中的方法 return 将较大的数字作为参数,并且 return 是最后一位数字。
- 打印通过 (2) 和 (3) 中的方法 return 得到的两个值。
我创建的代码(如下所示)成功读取了用户输入,但未能打印出较大整数和较大整数的最后一位数字。它而是打印出“0”。这是打印到控制台的内容:
Enter First Integer: (Entered Integer)
Enter Second Integer: (Entered Integer)
Larger Integer: 0
Last Digit: 0
我相信代码应该可以正常运行,除了在方法内部确定的值没有被 returned 到 main。 Eclipse 没有显示任何错误消息,这使我相信问题出在我的 return 语句中。欢迎和期望任何建议或解决方案。谢谢。
import java.util.Scanner;
public class thursdayWork{
//Determines larger integer and returns it.
public static int processAndReturn(int int1, int int2, int answer){
answer = Math.max(int1, int2);
return answer;
}
//Determines last digit of integer and returns it.
public static int processLargerInt(int answer, int lastDigit){
if((answer >= 0) && (answer < 10))lastDigit = (answer % 10);
else if((answer >= 10) && (answer < 100))lastDigit = (answer % 100);
else if((answer >= 100) && (answer < 1000))lastDigit = (answer % 1000);
else if((answer >= 1000) && (answer < 10000))lastDigit = (answer % 10000);
else System.out.print("Pick smaller numbers.");
return lastDigit;
}
//Calls methods and prints returned values.
public static void main(String[] args){
Scanner console = new Scanner(System.in);
int int1;
int int2;
int answer = 0;
int lastDigit = 0;
System.out.print("Enter First Integer: ");
int1 = console.nextInt();
System.out.print("Enter Second Integer: ");
int2 = console.nextInt();
processAndReturn(int1, int2, answer);
System.out.println("Larger Integer: " + answer);
processLargerInt(answer, lastDigit);
System.out.print("Last Digit: " + lastDigit);
}
}
你的问题在于你如何对待processAndReturn
。 Java 按值传递基元(如 int
)。这意味着当您将 answer
赋予方法 processAndReturn
时,它实际上将变量的 value 传递给方法,因此您对其所做的任何更改都不存在你从哪里打电话来的。解决这个问题的方法是使用 processAndReturn
的 return 值
您应该将该行修改为如下所示:
int answer = processAndReturn(int1, int2);
并且您需要修改 processAndReturn
以仅接受两个参数。
看起来像这样:
static int processAndReturn(int int1, int int2){
return Math.max(int1, int2); //Note: you can just replace a call to this
// With a call to max, meaning it's pointless
}
您也需要为 processLargerInt
做类似的事情。
顺便提一下,这与 eclipse 无关。那就是你的开发环境。这与 java 有关,因此您使用什么开发它并不重要。
与其将答案作为参数传递给这两种方法,不如让方法返回答案。您应该阅读有关按值传递与按引用传递的更多信息。
public static void main(String[] args) {
// Your scanner code here.
int answer = processAndReturn(int1, int2);
System.out.println("Larger Integer: " + answer);
int lastDigit = processLargerInt(answer);
System.out.print("Last Digit: " + lastDigit);
}
public static int processAndReturn(int int1, int int2){
return Math.max(int1, int2);
}
public static int processLargerInt(int answer) {
return answer % 10;
}