澄清谜团

Clarification on Mystery

我刚开始在线学习计算机科学 class,我对编程还很陌生(几周的经验)。我正在做作业,但我不明白神秘方法是什么。我还没有在网上、教科书或教授那里找到可以解决问题的答案。任何使用此代码作为示例的解释也将不胜感激!

这是我在以下地方看到的方程式:

public static void mystery1(int n) {
    System.out.print(n + " ");
    if (n > 0) {
        n = n - 5;
    }
    if (n < 0) {
        n = n + 7;
    } else {
        n = n * 2;
    }
    System.out.println(n);
}

如果有人能提供帮助,那就太好了!谢谢!

您的作业可能是弄清楚此方法的作用。更具体地说,它在屏幕上打印了什么。我将向您介绍如何解决这个问题。

您有一个函数,也称为方法,称为 mystery1。函数只是一个命名的代码块,您可以在其他代码段中使用它。此函数采用一个称为 n 的整数参数。对于这个例子,我们假设 n=12。

调用函数时发生的第一件事是通过 System.out.print 方法打印出 n。请注意,它在它之后打印了一个空白 space 。另请注意,最后它会打印在方法中分配的另一个 n 值。所以该方法将打印“12?”没有双引号。问号是我们必须弄清楚的。代码表示如果 n > 0 则 n = n-5。由于 12 大于 0,n 获得新值 7。下一个 if 语句表示如果 n 小于 0,则 n 被赋值为 n+7。但是不小于0,此时是7,所以我们转到else语句。在此语句中,n 乘以 2,即 14。所以最后一条语句打印 14.

因此,对于输入值 12,此方法打印: 12 14

希望对您有所帮助。如果不是,请详细说明你的作业以及你对我的解释有什么不理解的地方。

这种练习的重点是给你一个方法,但他们不会告诉你它的作用(因此 "mystery")。你应该自己弄清楚它的作用(比如 "solving the mystery")。这并不意味着该方法有任何特殊之处。

假设我给你一个这样的"mystery"方法:

public static void mystery(int n) {
  System.out.println(n+1);
}

你会 "solve the mystery" 告诉我这个方法打印出 n 之后的数字。这里没什么特别的。

在您给出的示例中,您的工作是告诉我为什么该方法在 n = 0 时打印出 0 0,或者在 n = 6 时打印出 6 2


我认为 "mystery method" 这个词的用法相当具有误导性,因为它显然让你(还有很多,很多很多 others) 认为这些方法有些特别,是您需要学习的东西。他们没有什么特别之处,也没有什么可学的。

我认为如果教师只是说 "tell me what this method does" 而不是试图通过说 "Here's a mystery method (ooh, fancy and entertaining). Can you play detective and solve the mystery for me?"

来像对待 5 岁的孩子那样对待学生,很多人会更好地理解这一点

首先,我对你的问题投了赞成票,因为我认为这对于刚开始计算机编程的人来说是一个有效的问题,而且我认为有些人无法理解 Stack Overflow 的意义和目的,这是在需要的时候帮助程序员。

其次,我认为对您的 post 发表评论的几位用户是在正确的轨道上。我个人从未听说过神秘方法,所以我认为这里的目标是让您简单地弄清楚该方法的作用。在这种情况下,该方法采用 int 'n' 的参数。这意味着如果在应用程序的任何时候调用 'mystery1()' 方法,则必须传递一个整数作为变量。

假设用户输入数字“9”。该方法将由代码 mystery1(9) 调用。这将 运行 'if' 语句的第一部分,因为 n 大于 0。因此,n 将等于 n - 5,或 9 - 5,即 4。(因此, n=4.)

希望我的回答对您有所帮助。保重。