Возвращение массива двойных значений из строки

1

Строковые числа = ("5,25,77,44,64,8,55,28,86,35");

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

public static double[] fillArray(String numbers)
{
    String[] answers = numbers.split(",");

    double[] boom = new double[answers.length];

    for (int index = 0; index < answers.length; index++)
    {
        boom[index] = Double.parseDouble(answers[index]);
    }

    return boom;
}

Ошибка, которую я получаю, довольно странная...

 [De56f047c 

Почему это и как я могу это исправить?

Теги:

3 ответа

8

Вы вызываете toString() в массиве - и массивы не переопределяют Object.toString(). Итак, вы получаете поведение от Object.toString():

Метод toString для класса Object возвращает строку, состоящую из имени класса, объектом которого является экземпляр, символа at-sign '@' и шестизначного шестнадцатеричного представления хеш-кода объекта. Другими словами, этот метод возвращает строку, равную значению:

getClass().getName() + '@' + Integer.toHexString(hashCode())

Arrays.toString(double[]) на результат, и все будет хорошо. Итак, этот код:

double[] array = fillArray("5,25,77,44,64,8,55,28,86,35");
System.out.println(Arrays.toString(array));

... дает результат:

[5.0, 25.0, 77.0, 44.0, 64.0, 8.0, 55.0, 28.0, 86.0, 35.0]

Я действительно хочу, чтобы toString() была переопределена для всех массивов. Это упростит жизнь...

1

Если я буду следовать тому, что вы хотите, вы можете использовать это -

public static void main(String[] args) {
    String numbers = ("5,25,77,44,64,8,55,28,86,35");
    List<Double> al = new ArrayList<Double>();
    for (String str : numbers.split(",")) {
        al.add(Double.valueOf(str));
    }
    double[] boom = new double[al.size()];
    for (int i = 0; i < al.size(); i++) {
        boom[i] = al.get(i);
    }
    System.out.println(Arrays.toString(boom));
}

Выход,

[5.0, 25.0, 77.0, 44.0, 64.0, 8.0, 55.0, 28.0, 86.0, 35.0]
0

Вы не печатаете результат массива должным образом.

double[] array = fillArray("5,25,77,44,64,8,55,28,86,35");

Вы, вероятно, сделали это:

System.out.println(array);

Но вы не можете сделать это, чтобы распечатать массив.

В результате вы получили

имя класса, объектом которого является экземпляр, знак at-sign '@' и шестнадцатеричное представление без знака хеш-кода объекта.

Послушайте здесь, чтобы узнать об этом.

Вам нужно выполнить итерацию по массиву или использовать Arrays.toString(array[])

Так, например:

for (double d : array) { 
    System.out.print(d + " ");
}

Или просто:

System.out.println(Arrays.toString(array));

Ещё вопросы

Сообщество Overcoder
Наверх
Меню