【问题标题】:How to use a method to return a double array of user input values?如何使用方法返回用户输入值的双精度数组?
【发布时间】:2020-02-14 20:52:03
【问题描述】:

我想创建一个返回用户输入值的双精度数组的方法。我已经想出了如何创建一个方法来要求用户选择一个数组应该包含多少个元素,然后将大小传递给下一个方法,即输出一个用户输入值的双精度数组。

我的目标是练习学习如何使用基本方法(只是公共静态方法)来分治手头的问题。

...java 包数组练习; 导入 java.util.Scanner;

公共类 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 方法中双精度数组的所有值。

我得到的只是这个:

运行: 输入要在数组中存储多少个 double 类型? 2 输入值 #1:1.234567 输入值 #2:2.345678 [D@55f96302

这是为什么?我在这里做错了什么?我只是一个初学者,这学期我要上 Java 的课程,所以一切对我来说都是新的。

【问题讨论】:

    标签: java arrays static-methods


    【解决方案1】:

    数组是java中的一个对象,因此它是通过调用它的toString()方法来打印的。此方法对数组类不是很有帮助,并且不会打印数组内容。要打印数组内容,您可以调用Arrays.toString(yourArray),它将返回数组内容的字符串表示形式。

    你应该替换

    System.out.println(valueOfElements(number));
    

    System.out.println(Arrays.toString(valueOfElements(number)));
    

    并添加以下导入语句:

    import java.util.Arrays;
    

    【讨论】:

      【解决方案2】:

      首先你必须明白在java中一个数组变量是一个引用。这意味着当您尝试打印出数组变量时,它会打印出内存地址,而不是数组的元素。解决问题的方法是将函数的返回值保存到数组中,然后 for 循环遍历数组中的每个元素。

      double[] values = valueOfElements(number);
      for(int i = 0; i < values.length; i++){
          System.out.println(values[i]);
      }
      

      [] 取消对双精度的引用,因此您访问的是双精度值,而不是内存地址值。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-03-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-06-03
        相关资源
        最近更新 更多