用Java打印对象数组 [英] Printing an array of objects in Java

查看:134
本文介绍了用Java打印对象数组的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在制作电话簿并填写条目。这些条目包括两个姓氏和姓名字符串以及一个电话号码。我正在使用数组来存储条目。我正在尝试将数组打印出来,并且我在每个类中都添加了toString方法。但是当我打印出来时,我仍然得到[LEntry; @ 8dc8569。我不确定我做错了什么。这是代码。

  public class Entry {

String surname;
String initial;
int number;


public Entry(String surname,String initial,int number){
this.surname = surname;
this.initial = initial;
this.number = number;
}

public String getSurname(){
return surname;
}

public String getInitial(){
return initial;
}

public int getNumber(){
返回数字;
}

void setNumber(int number){
this.number = number;
}

public String toString(){
return surname +\t+ initial +\t+ number;
}
}


公共类ArrayDirectory {

int DIRECTORY_SIZE = 6;
条目[]目录=新条目[DIRECTORY_SIZE];


public void addEntry(String surname,String initial,int num){

int i = findFreeLocation();

目录[i] =新条目(姓氏,初始,数字);

}


public void deleteEntry(String surname,String initial){

int i = findEntryIndex(surname,initial);
目录[i] = null;
}


public void deleteEntry(int number){

int i = findEntryIndex(number);
目录[i] = null;
}


public int findEntry(String surname,String initial){

int i;
i = findEntryIndex(姓氏,初始);

返回目录[i] .getNumber();
}


public void editNum(String surname,String initial,int number){

int i;
i = findEntryIndex(姓氏,初始);
目录[i] .setNumber(number);
}


public void print(){
// TODO print array
System.out.println(directory);
}

private int findEntryIndex(String surname,String initial){
int i;
for(i = 0; i< = DIRECTORY_SIZE; i ++)
{
if(directory [i]!= null&& directory [i] .getSurname()。equals (姓)&& directory [i] .getInitial()。equals(initial))
{
break;
}
}
返回i;
}

private int findEntryIndex(int number){
int i;
for(i = 0; i< = DIRECTORY_SIZE; i ++)
{
if(directory [i]!= null&& directory [i] .getNumber()==数字)
{
break;
}
}
返回i;
}


private int findFreeLocation(){
int i;
for(i = 0; i< DIRECTORY_SIZE; i ++)
{
if(directory [i] == null)
{
break;
}
}
返回i;
}

public String toString(){

for(int i = 0; i< DIRECTORY_SIZE; i ++){
System.out.println (目录[i]);
}
返回null;

}


}


公共类测试{

public static void main (String [] args){

ArrayDirectory phoneBook = new ArrayDirectory();

phoneBook.addEntry(Bigger,R,2486);
phoneBook.addEntry(Smaller,E,0423);
phoneBook.addEntry(Ringer,J,6589);
phoneBook.addEntry(Looper,T,6723);
phoneBook.addEntry(Lennon,B,4893);
phoneBook.addEntry(Martin,M,2121);

phoneBook.print();

}

}


解决方案

使用 Arrays.toString();

  Arrays.toString(目录);只需打印目录,即

类型 Entry 的数组实例,它不会像您期望的那样覆盖 toString()方法/ p>




另见




I'm making a phone book and filling it with entries. The entries consist of two Strings for surname and initial, and a telephone number. I'm using an array to store the entries. I'm trying to get the array to print out and I've put toString methods in each class. But when I print out i'm still getting "[LEntry;@8dc8569". I'm not sure what I'm doing wrong. Here's the code.

public class Entry {

String surname;
String initial;
int number;


public Entry(String surname, String initial, int number) {
    this.surname = surname;
    this.initial = initial;
    this.number = number;
}

public String getSurname(){
    return surname;
}

public String getInitial(){
    return initial;
}

public int getNumber() {
    return number;
}

void setNumber(int number){
    this.number = number;
}

public String toString(){
    return surname+ "\t" +initial+ "\t" +number;
}
}


public class ArrayDirectory {

int DIRECTORY_SIZE = 6; 
Entry [] directory = new Entry[DIRECTORY_SIZE];


public void addEntry(String surname, String initial, int num) {

    int i = findFreeLocation();               

    directory[i] = new Entry(surname, initial, num);

}


public void deleteEntry(String surname, String initial) {

    int i = findEntryIndex(surname, initial);                     
    directory[i] = null;
}


public void deleteEntry(int number) {

    int i = findEntryIndex(number);                     
    directory[i] = null;
}


public int findEntry(String surname, String initial) {

    int i;
    i = findEntryIndex(surname, initial);

    return directory[i].getNumber();
}


public void editNum(String surname, String initial, int number) {

    int i;
    i = findEntryIndex(surname, initial);
    directory[i].setNumber(number);
}


public void print() {
    // TODO print array
    System.out.println(directory);
}

private int findEntryIndex(String surname, String initial) {
    int i;
    for (i = 0; i <= DIRECTORY_SIZE; i++) 
    {
        if(directory[i] != null && directory[i].getSurname().equals(surname) && directory[i].getInitial().equals(initial))
        { 
            break;
        }
    }
    return i;
}

private int findEntryIndex(int number) {
    int i;
    for (i = 0; i <= DIRECTORY_SIZE; i++)
    {
        if(directory[i] != null && directory[i].getNumber() == number)
        { 
            break;
        }
    }
    return i;
}


private int findFreeLocation() {
    int i;
    for (i = 0; i < DIRECTORY_SIZE; i++) 
    {                                           
        if(directory[i] == null)
        { 
            break;
        }
    }
    return i;
}

public String toString() {

    for(int i = 0 ; i< DIRECTORY_SIZE ; i++){ 
        System.out.println( directory[i] );
    }
    return null;

}


}


public class Test {

public static void main(String[] args) {

    ArrayDirectory phoneBook = new ArrayDirectory();

    phoneBook.addEntry("Bigger", "R", 2486);
    phoneBook.addEntry("Smaller", "E", 0423);
    phoneBook.addEntry("Ringer", "J", 6589);
    phoneBook.addEntry("Looper", "T", 6723);
    phoneBook.addEntry("Lennon", "B", 4893);
    phoneBook.addEntry("Martin", "M", 2121);

    phoneBook.print();

}

}

解决方案

Use Arrays.toString();

Arrays.toString(directory); 

when you just print directory, which is an instance of array of type Entry, it doesn't override the toString() method the way you are expecting


Also See

这篇关于用Java打印对象数组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆