Array的toString()实现

时间:2013-12-05 20:44:14

标签: arrays offset tostring

在我提出问题之前,我要感谢所有帮助我解决上一个问题的人。 Anywho,即使我把它放到一个toString方法,我当前也得到了内存偏移量。我已经阅读了大多数关于toString方法的问题并且有一些理解,我只是想确保我是否正确实现了这一点。如果您认为这是一个多余的问题,我理解。感谢您的帮助。

船舶类

import java.util.Scanner;
public class Ship{

    int type;
    public String [][] shipPiece = new String[11][11];
    Scanner in = new Scanner(System.in);
    //Coordinate xy = new Coordinate();
    //private Coordinate[] bawdPiece = {new section()};
public Ship(){

}
    public String[][] placeShip()
    {
       System.out.println();
       for(int x = 1; x<10; x++)
       {
           for(int y = 1; y<10; y++)
           {
               shipPiece[x][y] = "0";
               System.out.print("|" + shipPiece);
           }
       }
       return shipPiece;
    }
    public String toString()
    {
        StringBuilder temp = new StringBuilder();

        temp.append(shipPiece);
        return temp.toString();
    }

2 个答案:

答案 0 :(得分:0)

如果我正确理解了这个问题,你是否试图将shipPiece的索引作为字符串?

如果是这种情况,请尝试String.ValueOf(index),你显然必须这样做两次,因为你有一个二维数组。

例如:

String s = String.ValueOf(xIndex) + "," + String.ValueOf(yIndex);

答案 1 :(得分:0)

public String toString()
{
    StringBuilder temp = new StringBuilder();

    for(int x = 0; x < 10; x++)
    {
       for(int y = 0; y < 10; y++)
       {
          temp.append(String.valueOf(shipPiece[x][y]);
       }
       temp.append("\n");
    }

    return temp.toString();
}

我想指出的另一件事是你的数组初始化。您使用11 x 11索引初始化它,但是您的循环仅向每行添加9个值并且列循环从1开始并在9结束。您可能希望将初始化修复为10 x 10并使循环从0开始。