【问题标题】:Calling user input from main method into another method将用户输入从主方法调用到另一个方法
【发布时间】:2021-03-03 00:35:23
【问题描述】:

您好,我是 Java 新手,需要一些帮助。如果我弄错了一些措辞,我深表歉意。我提示用户在我的 main 方法中输入 2 个数字,我需要将这两个数字返回到已经设置了 2 个参数的 int [] 方法中。所以我有一些类似的东西

public static int[] getnum (int a , int b) {

int [] z = {a,b}

return z;

}

public static void main(String[] args) {

Scanner scanner = new scanner (System.in);

System.out.println("Please enter a number.");

a = scanner.netInt();

System.out.println("Please enter another number.");

b = scanner.netInt();

getnum(a,b); // I don't know how to pass a and b into my getnum 

}

我尝试过 getnum (a,b);但我不知道如何将其恢复到我的 getnum 方法。我觉得它很简单,但我无法将我的大脑包裹起来我已经有一段时间了。

所以我已经有了必须在 getnum 中使用的参数,我需要在我的 main 方法中使用 a 和 b 在我的 get num 方法中填充 x 和 y,以便我可以返回 z。非常感谢任何方向或建议。我希望我解释清楚了。

【问题讨论】:

  • 我建议你继续阅读Java教程。具体来说,您应该找到一个解释如何使用方法的内容。我们说你“调用”一个方法来使用它。所以我建议谷歌搜索“java教程方法调用”之类的东西来查找更多信息。
  • 你说“我试过做 getnum (a,b); ”。你把它放在你的代码哪里?当你这样做的时候发生了什么?你有没有得到任何错误?如果有,它们是什么?如果不是,那么输出是什么,您希望它是什么?如果您需要帮助,请edit 显示您的代码。
  • 你是怎么调用println()方法或者netInt()方法的?
  • 谢谢!当我打印 arrays.to 字符串时,我看到了输入。我试图调用整个arrays.toString (getnum);从 getnum 然后尝试返回 getnum 但它希望我重新初始化它。我错过了哪一步?

标签: java arrays input methods return-value


【解决方案1】:

首先,在编码时,为您的方法和变量命名一些比getnum、a、b 和z 更有意义的名称。此答案的其余部分将基于如下所示的getIntArray() 方法:

public static int[] getIntArray(int element1, int element2) {
    int[] intArray = { element1, element2 };
    return intArray;
}

此方法与您的方法完全相同,唯一的目的是获取传递给该方法的两个提供的参数并将它们放入一个整数 (int) 数组并返回该数组:

对于您的用例,getIntArray() 方法将整数值(用户已在控制台窗口中输入)存储到 int 类型的整数数组中稍后在您的代码中使用。此方法将在用户成功提供所需的数值数据后调用,这些数据被放入整数变量a 和b,如下所示:

int[] myArray = getIntArray(a, b);

在调用 getIntArray() 方法之后,您可能希望通过在调用之后添加以下代码行来证明数组中的值作为索引元素:

`System.out.println(Arrays.toString(myArray)); 

或者通过使用可能像这个标准for循环这样的循环机制:

for (int i = 0; i < myArray.length; i++) {
    System.out.print(myArray[i]);
}

根据您的评论:

我试图调用整个 Arrays.toString (getnum);

如果您想直接在Arrays.toString() 方法中调用getIntArray() 方法,那么您还必须为各自的getIntArray() 方法参数@987654341 提供所需的参数a 和b(由用户提供) @ 和 element2。例如,这可以正常工作:

System.out.println(Arrays.toString(getIntArray(a, b));

因为getIntArray() 方法包含必需的参数,您必须提供参数(值)以满足这些特定方法参数的要求,否则将发生异常(错误)。


为了好玩:

假设您要处理的不仅仅是两个整数值。假设您希望用户提供 10 个整数值(或任何数量的整数),然后调用 getIntArray() 方法以在整数数组中返回所有这些值:

int myArray = getIntArray(10, 20, 30, 40, 50, 60, 70, 80, 90, 100)
System.out.println(Arrays.toString(myArray));

控制台将显示:

[10, 20, 30, 40, 50, 60, 70, 80, 90, 100]

表明每个提供的值确实作为索引元素包含在名为 myArray 的数组中。

你问这怎么可能? getIntArray() 方法的参数已替换为所谓的Varargs Notation 参数。参数类型后面的三个句点(... 称为省略号)表示参数可以作为数组传递或作为参数序列 以逗号分隔. Varargs 可以only在最后的参数位置或用作only方法范围。请参阅下面的新方法:

public static int[] getIntArray(int... elementValues) {
    return elementValues;
}

这个方法仍然和你的方法做同样的事情,只是有一个例外,你可以传递任意数量的参数,只要每个参数用逗号分隔即可。实际上,您根本不需要传递任何参数,但是在这个特定用例中,您将返回一个空 (null) 数组。只是玩玩而已。

【讨论】:

    【解决方案2】:

    参数是正确的步骤。在您的 getnum (这并不意味着什么)方法中,就像 x 和 y 是局部变量一样。然后,在 main 方法中,在调用该方法时给 x 和 y 一个值。 您的代码如下所示:

    import java.util.Scanner;
    
    public class FILENAME {
      public static int[] getnum(int x, int y) {
        int[] z = { x, y };
        return z;
      }
    
      public static void main(String[] args) {
    
        Scanner scanner = new Scanner(System.in); // Java is case sensitive!
    
        System.out.println("Please enter a number.");
    
        int a = scanner.netInt();
    
        System.out.println("Please enter another number.");
    
        int b = scanner.netInt();
    
        getnum(a, b); // You call the method with parameters.
      }
    }
    

    如果您还需要什么,请告诉我。

    【讨论】:

    • 感谢您的帮助!我认为我没有正确地表达我的问题,所以我编辑了我的代码。我试图使其简洁,而不是将我的全部代码放在这里,但是在我的 main 方法中从用户那里获得 a 和 b 的输入值之后,我将如何将它们传递回我的 getnum 方法?
    • 所以第一个输入是int a,第二个输入是int b。后来,我们调用getnum方法,在参数里面,我们放了a和b(用户输入)。这有意义吗?
    • 我是不是忘记回复了! TYSM 为您提供所有帮助!
    猜你喜欢
    • 2016-01-08
    • 1970-01-01
    • 1970-01-01
    • 2016-07-02
    • 2015-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多