2016-10-26 3 views
0

Я пытаюсь назначить массив чисел от 1 до 10, используя приведенный ниже код. В основном я зациклился на том, как вернуть массив. Нужен ли мне метод toString?Возвращение содержимого из массива

package arrays1; 

import java.util.Arrays; 


public class Arrays1 { 

    /** 
    * @param args the command line arguments 
    */ 
    private int[] numbers; 
    private int DEFAULT_SIZE = 10; 


    public Arrays1(int size){ 
     numbers = new int[DEFAULT_SIZE]; 

    } 
    public int[] add(int[] n) 
    { 
     for(int i=0; i<numbers.length; i++){ 

     numbers[i]=n[i];} 
     return numbers; 

    } 
    public int[] getValues(){ 
    return numbers; 

    } 


    public static void main(String[] args) { 
     // TODO code application logic here 
     Arrays1 A = new Arrays1(9); 

     System.out.println(A.getValues()); 
    } 



} 

Как вернуть содержимое массива из этого кода? Нужно ли создавать новый объект?

+0

Какая часть вашего кода дает вам проблемы? Это 'getValues ​​()'? Это 'Arrays1 u = ...'? Пожалуйста, объясни. – dasblinkenlight

+0

Привет Я хочу создать объект в основной программе, а затем создать другой метод, который покажет содержимое результатов массива. Массивы1 u = новые массивы1 (10); – blueGOLD

+0

спасибо, но я получаю сообщение об ошибке после установки значения размера в основной программе: Arrays1 u = new Arrays1 (10); u.getValues ​​(); – blueGOLD

ответ

4

A.getValues() возвращает указатель на целочисленный массив numbers объект, который, вероятно, является результатом, который вы видите. Вам не нужен новый объект, просто используйте тот, который вы сделали, Arrays1 A и перебирать его содержимое, так что-то вроде этого:

public static void main(String[] args) { 
     // TODO code application logic here 
     Arrays1 A = new Arrays1(9); 

     for (int i = 0; i < A.getValues().length; i++){ 
      System.out.println(A.numbers[i]); 
     } 
    } 
3

Да, метод toString будет полезен для упорядочивания содержимого из numbers массив в строку. Но в этом случае, вы должны назвать это так:

Arrays1 a = new Arrays1(9); 
System.out.println(a); // it is an implicit call to toString() 

Другой приемлемой альтернативой является позволить сериализации к ответственности клиента. В этом случае клиент должен полагаться на метод getValues() и сериализовать его сам по себе:

Arrays1 a = new Arrays1(9); 
System.out.println(Arrays.toString(a.getValues())); 

Еще менее подробно: Просмотрите конструктор: Он не использует параметр size, и это может привести к путанице.

Смежные вопросы