gpt4 book ai didi

java - 是否可以在验证后将 input.next 作为可变长度参数列表中的参数直接传递给方法? <在java中>

转载 作者:行者123 更新时间:2023-12-02 12:18:18 25 4
gpt4 key购买 nike

package compute.greatest.common.denominator;

import java.util.Scanner;

public class computeGreatestCommonDenominator{
private static Scanner input;

public static void main(String[] args) {
input = new Scanner(System.in);

final int MAX = 20;
final int MIN = 2;

System.out.println("Enter between " + MIN + " and " + MAX + " numbers ( inclusive ) to find the GCD of: ");

for(int i = 0; input.nextInt() != '\n'; i++) { // Normally I would use a for loop to populate input into
if(input.nextInt() < MIN) { // an array and pass the array to method gcd().
System.out.println("ERROR! That number is not within the given constraints! Exiting.......");
System.exit(1); // Any non-zero value, is considered an abnormal exit.
}

}

public static int gcd(int... numbers) {
int greatestCommonDenominator = 0;
}
}

通常我会使用 for 循环将输入填充到数组中并将其传递给方法 gcd(int...numbers)。然而,这对我来说似乎是一种冗余的情况 - 将数组传递给可变长度参数列表,该列表被视为数组。首先我要说的是,我还处于java的学习阶段,虽然理解可变长度参数列表,但还不是一个有信心的理解。有没有一种方法可以验证输入数据并将其在循环中逐一传递,直接到可变长度参数列表 - 不使用数组?有数组对我来说似乎多余,没有数组似乎不合逻辑:/

最佳答案

我认为您在这里误解了可变长度参数(varargs)的使用。

Varargs 是很好的语法糖,因为它生成了以下代码:

int[] ints = {1, 2, 3};
gcd(ints);

更优雅:

gcd(1, 2, 3);

这就是可变参数的目的。

如果您没有或不期望这样的代码:

int[] ints = {1, 2, 3};
gcd(ints);

那么 varargs 就没那么有用了,当然不要强制你的代码适合这个 varargs 东西。

我的建议是保持代码不变,或者如果您不需要在代码中的其他任何地方使用可变参数功能,则可以将可变参数更改为普通数组参数。

关于java - 是否可以在验证后将 input.next 作为可变长度参数列表中的参数直接传递给方法? <在java中>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45994759/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com