Строковые числа = ("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
Почему это и как я могу это исправить?
Вы вызываете 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()
была переопределена для всех массивов. Это упростит жизнь...
Если я буду следовать тому, что вы хотите, вы можете использовать это -
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]
Вы не печатаете результат массива должным образом.
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));