0

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


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

  1. 读取两个数字(整数)
  2. 包含一个将两个整数作为参数并返回两者中较大者的方法。
  3. 包含从 main() 调用的另一个方法,将 (2) 中方法返回的较大数字作为参数并返回最后一位。
  4. 打印 (2) 和 (3) 中的方法返回的两个值。

我创建的代码(如下所示)成功读取了用户输入,但未能打印出较大的整数和较大的整数的最后一位。而是打印出“0”。这是打印到控制台的内容:


Enter First Integer: (Entered Integer)
Enter Second Integer: (Entered Integer)
Larger Integer: 0
Last Digit: 0

我相信代码应该可以正常运行,除了在方法内部确定的值没有返回到 main 的事实。Eclipse 没有显示任何错误消息,这使我相信问题出在我的返回语句中。欢迎和期望任何建议或解决方案。谢谢你。


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);

    }  
}
4

2 回答 2

0

你的问题在于你如何处理processAndReturn。Javaint按值传递原语(如 )。这意味着当你给answer方法时processAndReturn,它实际上是把变量的交给了方法,所以你对它所做的任何更改都不存在于你调用它的地方。解决这个问题的方法是使用processAndReturn You should modify 该行的返回值,如下所示:

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有关,所以你用什么开发它并不重要。

于 2016-09-25T02:10:40.847 回答
0

与其将答案作为参数传递给这两种方法,不如从方法中返回它。您应该阅读有关按值传递与按引用传递的更多信息。

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;
}
于 2016-09-25T02:13:38.640 回答