Методы ArrayList и Array

#java #arrays #arraylist

#java #массивы #arraylist

Вопрос:

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

Когда я пытаюсь запустить свой код, местоположение / каталог для имени отображается как [Ljava.lang.String;@1f32e575 .

Результаты выполнения моего кода:

 Name
ii
jj
[Ljava.lang.String;@1f32e575 // code to remove
  

Мой код:

     public static String[] name() {

        System.out.println("Name");
        n = new String[]{ "ii", "jj" };
        for (int i = 0; i < n2.length; i  ) {
            System.out.println(n[i]);
        }
    }
  

Комментарии:

1. Вы забыли закрыть цитату hobby2 = new String[] { "ii, "jj" }; , кроме того, этот код очень трудно читать, пожалуйста, отформатируйте его немного лучше, чтобы упростить отладку и удалить любой ненужный код, который не имеет прямого отношения к вашей проблеме.

2. Код в вашем вопросе не приведет к такому выводу. Вывод, который вы обозначили как «код для удаления», будет выводиться, если вы вызовете println on n . Но вы этого не делаете.

Ответ №1:

Вот ваш исправленный код:

 import java.util.ArrayList;

class Detail {
    private String name;
    private String nationality;
    private static String[] hobby2;

    public Detail() {

    }

    public String getName() {
        return name = "A";
    }

    public String getNationality() {
        return nationality = "abc";
    }

    public void setInfo(String name, String nationality) {
        this.name = name;
        this.nationality = nationality;
    }

    public static void setHobbies() {

        hobby2 = new String[] { "ii", "jj" };

        System.out.println("Hobbies");

        for (int i = 0; i < hobby2.length; i  ) {
            System.out.println("t"   hobby2[i]);
        }
    }

    public static void setWishes() {

        System.out.println("Wishes");

        ArrayList<String> allWishes = new ArrayList<String>();

        allWishes.add("aa");
        allWishes.add("bb");
        allWishes.add("cc");
        allWishes.add("dd");

        for (String i : allWishes) {
            System.out.println("t"   i);
        }
    }

    public void displayDetail() {
        DOB d = new DOB();

        System.out.println("Name: "   getName());
        System.out.println("Nationality: "   getNationality());
        System.out.println("Date of birth: "   d.dateString(1, "Jan", 1000));
        setHobbies();
        setWishes();
    }

}

class DOB {

    public String dateString(int day, String month, int year) {
        String dob = (day   " "   month   ", "   year);
        return (dob);

    }
}

class Test {
    public static void main(String[] args) {

        MyInfo my = new MyInfo();
        my.displayDetail();

    }

}
  

Самым первым значением, которое вам не нужно, был идентификатор объекта, вы просто не можете возвращать значения объекта. Если вы хотите увидеть значения, вам нужно переопределить toString() метод.

Второе значение было видно только потому, что вы вернули список. Если вы использовали print() внутри своего метода, тогда не было необходимости его возвращать.

Советы: Вам нужно лучше понять методы получения и установки, потому что вы испортили всю концепцию в своем коде. Ваш пустой конструктор не нужен. Скорее, вы должны инициализировать все поля (переменные класса класса Detail) в конструкторе.

Ответ №2:

Удалите System.out.println в методе displayDetail(), как показано ниже,

     setHobbies();
    setWishes();
  

Комментарии:

1. А также операторы return the type и return должны быть удалены.