如何获取用户输入大小并从方法填充数组



我对Java相对较新,对为什么我的代码无法正常工作感到困惑。我正在使用方法和数组创建一个计算器。在我的代码中,我在下面提供的 getOperand 方法应该首先提示用户输入足够的值来填充数组,然后返回数组。这就是我感到困惑的地方。如果我必须使用相同的方法,检索数组的大小并从用户输入中填充数组,我是否正确设置了数组?是否可以同时返回两者?下面我尝试了我认为可行的方法,但是,它似乎不起作用。当我尝试填充数组时,我得到一个 ArrayIndexOutOfBoundsException

if(selection == 1) {
double operand1[] = getOperand("Please enter the values for the first array, with a space after each input", size);
double operand2[] = getOperand("Please enter the values for the second array, with a space after each input", size);
System.out.println(add(operand1, operand2));

public static double[] getOperand(String prompt, int size) {    
Scanner input = new Scanner(System.in);
System.out.println("Please enter the size for the array");
size = input.nextInt();
double operand[] = new double[size];
for (int x = 0; x < size; x++) {
operand[size] = input.nextDouble();
}
      // creating new arrays
System.out.println(prompt);
return operand;

我还没有设置其他方法,我首先尝试学习如何让用户输入来填充数组。不幸的是,我也无法添加任何新方法,因为我的方法是为我预定义的。以下是方法列表。

public static double[] add(double[] operand1, double[] operand2)
public static double[] subtract(double[] operand1, double[] operand2)
public static double[] multiply(double[] operand1, double[] operand2)
public static double[] divide(double[] operand1, double[] operand2)
public static double[] dotProduct(double[] operand1, double[] operand2)
public static double[] random(double lowerlimit, double upperlimit, int size)

首先,对问题要更准确,因为很难理解您要完成的任务,您可以提供有关您要实现的操作类型的更多信息。

因此,如果我理解正确,您正在尝试获取数组的大小,然后从用户那里获取两个数字(要添加到数组中的数字(,然后将它们相加。

int size = getOperand("What size would you like the array", size);
double operand1[] = getOperand("What would you like the first number to be", size);
double operand2[] = getOperand("What would you like the second number to be", size);
System.out.println(add(operand1, operand2));

这些行没有任何意义,因为你要求用户输入数组的大小,但你的方法返回数组。无论如何,在您的getOperand中,您都会询问用户的大小。因此,将getOperand方法用作为您创建数组的函数。例如

public static double[] getOperand(String prompt) {
Scanner input = new Scanner(System.in);
System.out.println(prompt);
int size = input.nextInt();
double operand[] = new double[size]; // creating new arrays
return operand;
}

(操作顺序错误,因为您在实际向用户提问之前接受用户输入。

您应该创建另一种从用户那里获取双精度的方法,例如

{
Scanner input = new Scanner(System.in);
System.out.println(Message);
return (input.nextDouble());
}

这将帮助您从用户那里获取数字,然后将它们放在数组的正确条目中。

double operand1[] = getOperand("What would you like the first number to be", size);也没有意义。这是因为您正在尝试从用户那里获取一个数字,但您没有尝试访问数组中的条目并实际添加它们,而是尝试创建另一个数组?这没有任何逻辑意义。 您应该做的是创建一个数组,然后将用户输入的数字放入第一个和第二个条目(0 和 1(中。我会给你一个伪代码的例子,这样你就可以自己编码了;

CREATE array NAME userNumber TYPE double = SIZE userInputForSize
usernumber ENTRY 0 = userInputDouble
usernumber ENTRY 1 = userInputDouble
DOUBLE result = SUM(usernumber ENTRY 0, usernumber ENTRY 1)
print("The sum of your numbers is" result)

如果您能提供更多信息,我可以提供更多帮助。

我在这里看到的问题是

int size = getOperand("What size would you like the array", size);

您的getOperand方法应该返回一个double[]。但是,您将其存储在 int 类型的 size 变量中。

出现的下一个问题是 getOperand 方法的第二个参数是int size。但是,您在修复中将int size更改为double[] size。我不确定您的代码究竟要完成什么,这就是我无法提供实现的原因。

希望这有帮助。

相关内容

  • 没有找到相关文章

最新更新