代码无法 Return 来自方法的整数值 (Java/Eclipse)

Code Fails to Return Integer Value From Method (Java/Eclipse)

过去两天我一直在搜索这个网站和其他网站,因此我意识到与这个问题类似的大量预先存在的问题。然而,三四个星期前才开始编程,我无法理解它们中的任何一个以及它们的线程。考虑到这一点,我有一个问题,更有经验的人可能拥有一个痛苦的基本和直接的解决方案。


使用 Eclipse,我必须创建一个执行以下操作的程序:

  1. 读取两个数字(整数)
  2. 包含一个方法,该方法将两个整数作为参数,return是两者中较大的一个。
  3. 包含另一个从 main() 调用的方法,该方法采用 (2) 中的方法 return 将较大的数字作为参数,并且 return 是最后一位数字。
  4. 打印通过 (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;
}