所以我之前问了一个有关在Java中返回数组的问题,我得到了答案,现在我的代码已用getter进行了更新,但是我一直沿用以下方法:
Phone@b08deb
作为输出,这不是我想要的,如果我要执行以下操作:
return arr[1];
它告诉我Phone无法转换为Phone [],而我对于如何简单地从数组中获取编译器吐出的“ 00000”这个数字深感迷惑(据我所知,不需要初始化数组,因为它默认为0)
链接到问题: How do I return an array to another class in Java?
更新的代码:
class TheDriverClass
{
public static void main(String[] args)
{
Phone p = new Phone(5);
System.out.println(p);
// Here it's supposed to return the values of an array with size 5,
//so it should print out 00000
}
}
接下来我有电话课:
class Phone
{
private Phone[] arr; //I'm supposed to keep the array private
public Phone(int theLength){
arr = new Phone[size];
}
public Phone[] getPhone(){
return arr;
}
}
答案 0 :(得分:1)
当您使用System.out.println()数组时,它基本上会打印出数组指针。
您需要类似Arrays.toString(array)的东西,它将在每个元素上调用toString并打印出人类可读的东西。
还有一部可以阅读的手机。您还需要覆盖其上的toString()。
class Phone
{
private int[] numbers; //I'm supposed to keep the array private
public Phone(int theLength){
numbers = new int[theLength];
}
public int[] getPhone(){
return numbers;
}
@Override
public String toString() {
return Arrays.toString(numbers);// also can use return Arrays.toString(numbers).replaceAll(",|\\[|\\]| ", ""); to clean up the , and []s
}
}
答案 1 :(得分:1)
public class HelloWorld {
public static void main(String[] args) {
Phone p = new Phone(5);
System.out.println(p.getPhone());
}
}
class Phone {
private int[] arr;
public Phone(int size) {
this.arr = new int[size];
}
/* convert array to string */
public String getPhone() {
return Arrays.toString(arr);
}
}
答案 2 :(得分:0)
如果您不想在Phone类中进行任何更改,请在CustomPhone类中继承Phone类并覆盖toString。当Phone类不是最后的课程时,这将起作用。我猜下面的代码可能会解决您的问题。
class PhoneCustom extends Phone{
public PhoneCustom(int theLength) {
super(theLength);
}
@Override
public String toString() {
StringBuffer sb = new StringBuffer();
for(int i = 0; i < super.getPhone().length; i++) {
if(super.getPhone()[i] == null) {
sb.append(0);
}else {
sb.append(super.getPhone()[i]);
}
}
return sb.toString();
}
}
此外,根据其他部分的要求修改toString。
如果您可以灵活地修改电话类,请重写电话类中的toString方法。
class Phone
{
private Phone[] arr; //I'm supposed to keep the array private
public Phone(int theLength){
arr = new Phone[theLength];
}
public Phone[] getPhone(){
return arr;
}
@Override
public String toString() {
StringBuffer sb = new StringBuffer();
for(int i = 0; i < arr.length; i++) {
if(arr[i] == null) {
sb.append(0);
}else {
sb.append(arr[i]);
}
}
return sb.toString();
}
}