用Java打印对象数组 [英] Printing an array of objects in 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(目录);只需打印目录
,即
类型 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();
}
}
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屋!