我对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
。我不确定您的代码究竟要完成什么,这就是我无法提供实现的原因。
希望这有帮助。