Как использовать метод для возврата двойного массива пользовательских значений ввода? - PullRequest
0 голосов
/ 18 октября 2019

Я хочу создать метод, который возвращает двойной массив пользовательских значений ввода. Я выяснил, как создать метод, чтобы попросить пользователя выбрать, сколько элементов должен содержать массив, а затем передать размер следующему методу, который должен выдавать двойной массив входных значений пользователя.

Моя цель состоит в том, чтобы потренироваться в изучении того, как использовать базовые методы (просто публичные статические методы) для разделения и преодоления существующей проблемы.

... java package array_exercises;import 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;
}

}

Ожидаемый вывод должен выводить все значения двойного массива в основном методе.

Все, что я получил, было так:

run: введите, сколько чисел типа double вы хотите сохранить в своем массиве? 2 Введите значение # 1: 1.234567 Введите значение # 2: 2.345678 [D @ 55f96302

Почему это так? Что я здесь не так делаю? Я только начинающий, в этом семестре я учусь на Java, так что для меня все ново.

Ответы [ 3 ]

2 голосов
/ 18 октября 2019

Массив - это объект в Java, и поэтому он печатается путем вызова метода toString(). Этот метод не очень полезен для класса массива и не печатает содержимое массивов. Чтобы напечатать содержимое массива, вы можете вызвать Arrays.toString(yourArray), который вернет строковое представление содержимого массива.

Вам следует заменить

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

на

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

и добавьте следующий оператор импорта:

import java.util.Arrays;
0 голосов
/ 18 октября 2019

Сначала вы должны понять, что в java переменная массива является ссылкой. Это означает, что когда вы пытаетесь распечатать переменную массива, она печатает адрес памяти, а не элементы массива. Чтобы решить эту проблему, нужно сохранить возвращаемое значение функции в массиве, а затем выполнить цикл по каждому элементу в массиве.

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

[] разыменовывает двойное, поэтому вы получаете доступ к двойному значению, а не к значению адреса памяти.

0 голосов
/ 18 октября 2019

Вы не можете использовать System.out.println() для массива. Сначала вы должны использовать toString в сгенерированном массиве.

...