如何使用方法 return 用户输入值的双精度数组?
How to use a method to return a double array of user input values?
我想创建一个 returns 用户输入值双数组的方法。我已经想出如何创建一个方法来要求用户选择一个数组应该包含多少个元素,然后将大小传递给下一个方法,即吐出用户输入值的双数组。
我的目标是练习学习如何使用基本方法(只是 public 静态方法)来分而治之。
...java
包裹array_exercises;
导入 java.util.Scanner;
public class Array_Exercises {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// Get number of elements to store values from the user
int number = numOfElements();
System.out.println(valueOfElements(number));
}
public static int numOfElements () {
// Create a Scanner object to get the user's input
Scanner input = new Scanner (System.in);
// Get the input from the user
System.out.print("Enter how many number of the type double do you want"
+ " to store in your array? ");
return input.nextInt();
}
public static double[] valueOfElements (int num) {
// Create a Scanner object to get the user's value for each element
Scanner input = new Scanner (System.in);
// Declare an array of doubles
double[] double_array = new double[num];
// Loop through the elements of double array
for (int i = 0; i < double_array.length; i++) {
System.out.print("Enter a value #" + (i + 1) + ": ");
double_array[i] = input.nextDouble();
}
return double_array;
}
}
预期的输出应该打印出 main 方法中双精度数组的所有值。
我得到的是这个:
运行:
输入您想在数组中存储多少双精度类型的数字? 2个
输入值 #1:1.234567
输入值 #2:2.345678
[D@55f96302
这是为什么?我在这里做错了什么?我只是一个初学者,我这学期 Java 参加 class,所以一切对我来说都是新的。
数组是 java 中的一个对象,因此它是通过调用其 toString()
方法打印的。此方法对数组 class 不是很有帮助,并且不会打印数组内容。要打印数组内容,您可以调用 Arrays.toString(yourArray)
,它将 return 数组内容的字符串表示形式。
你应该更换
System.out.println(valueOfElements(number));
和
System.out.println(Arrays.toString(valueOfElements(number)));
并添加以下导入语句:
import java.util.Arrays;
首先你要明白在java中数组变量是一个引用。这意味着当你尝试打印一个数组变量时,它打印出一个内存地址,而不是数组的元素。解决问题的方法是将函数的 return 值保存到数组中,然后循环遍历数组中的每个元素。
double[] values = valueOfElements(number);
for(int i = 0; i < values.length; i++){
System.out.println(values[i]);
}
[] 取消引用双精度值,因此您访问的是双精度值,而不是内存地址值。
我想创建一个 returns 用户输入值双数组的方法。我已经想出如何创建一个方法来要求用户选择一个数组应该包含多少个元素,然后将大小传递给下一个方法,即吐出用户输入值的双数组。
我的目标是练习学习如何使用基本方法(只是 public 静态方法)来分而治之。
...java 包裹array_exercises; 导入 java.util.Scanner;
public class Array_Exercises {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// Get number of elements to store values from the user
int number = numOfElements();
System.out.println(valueOfElements(number));
}
public static int numOfElements () {
// Create a Scanner object to get the user's input
Scanner input = new Scanner (System.in);
// Get the input from the user
System.out.print("Enter how many number of the type double do you want"
+ " to store in your array? ");
return input.nextInt();
}
public static double[] valueOfElements (int num) {
// Create a Scanner object to get the user's value for each element
Scanner input = new Scanner (System.in);
// Declare an array of doubles
double[] double_array = new double[num];
// Loop through the elements of double array
for (int i = 0; i < double_array.length; i++) {
System.out.print("Enter a value #" + (i + 1) + ": ");
double_array[i] = input.nextDouble();
}
return double_array;
}
}
预期的输出应该打印出 main 方法中双精度数组的所有值。
我得到的是这个:
运行: 输入您想在数组中存储多少双精度类型的数字? 2个 输入值 #1:1.234567 输入值 #2:2.345678 [D@55f96302
这是为什么?我在这里做错了什么?我只是一个初学者,我这学期 Java 参加 class,所以一切对我来说都是新的。
数组是 java 中的一个对象,因此它是通过调用其 toString()
方法打印的。此方法对数组 class 不是很有帮助,并且不会打印数组内容。要打印数组内容,您可以调用 Arrays.toString(yourArray)
,它将 return 数组内容的字符串表示形式。
你应该更换
System.out.println(valueOfElements(number));
和
System.out.println(Arrays.toString(valueOfElements(number)));
并添加以下导入语句:
import java.util.Arrays;
首先你要明白在java中数组变量是一个引用。这意味着当你尝试打印一个数组变量时,它打印出一个内存地址,而不是数组的元素。解决问题的方法是将函数的 return 值保存到数组中,然后循环遍历数组中的每个元素。
double[] values = valueOfElements(number);
for(int i = 0; i < values.length; i++){
System.out.println(values[i]);
}
[] 取消引用双精度值,因此您访问的是双精度值,而不是内存地址值。