Java 如何返回另一个类调用的数组?
所以我之前问了一个关于在Java中返回数组的问题,我得到了答案,现在我的代码用getter进行了更新,但是我一直得到以下方面的信息:Java 如何返回另一个类调用的数组?,java,arrays,Java,Arrays,所以我之前问了一个关于在Java中返回数组的问题,我得到了答案,现在我的代码用getter进行了更新,但是我一直得到以下方面的信息: Phone@b08deb 作为一个输出,这不是我想要的,如果我要做以下事情: return arr[1]; 它告诉我Phone无法转换为Phone[],我难以置信地不知道如何简单地从数组中获取编译器要吐出的数字“00000”(据我所知,我不需要初始化数组,因为它默认为0) 问题链接: 更新代码: class TheDriverClass { pub
Phone@b08deb
作为一个输出,这不是我想要的,如果我要做以下事情:
return arr[1];
它告诉我Phone无法转换为Phone[],我难以置信地不知道如何简单地从数组中获取编译器要吐出的数字“00000”(据我所知,我不需要初始化数组,因为它默认为0)
问题链接:
更新代码:
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;
}
}
当您使用System.out.println()创建数组时,它基本上会打印出数组指针 您需要类似array.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
}
}
如果您不想在Phone类中进行任何更改,则在CustomPhone类中继承Phone类并重写toString。当电话课程不是最终课程时,这将起作用。我想下面的代码可能会解决您的问题
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();
}
}
class Phone自定义扩展电话{
公用电话自定义(整数长度){
超级(长度);
}
@凌驾
公共字符串toString(){
StringBuffer sb=新的StringBuffer();
对于(inti=0;i
另外,根据您在其他部分中的要求修改toString
如果您可以灵活地修改phone类,那么可以重写phone类中的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();
}
}
class电话
{
私人电话[]arr;//我应该让阵列保持私人状态
公用电话(国际长途){
arr=新手机[长度];
}
公用电话[]getPhone(){
返回arr;
}
@凌驾
公共字符串toString(){
StringBuffer sb=新的StringBuffer();
对于(int i=0;i
- 如果希望获得“00000”格式的精确输出,则需要使用StringBuilder
- 在Phone类中,Phone[]arr将默认为null,因此使用int[]将默认值设置为0
手机中编写toString()
方法,你想打印出什么?Phone类似乎不包含任何有意义的数据。@MickMnemonic因为在Driver类中给出了Phone类中数组的长度(Phone p=new Phone(5);),我希望Phone类获取该数字并将其用作数组的大小,然后像这样返回数组:00000(或者不管数组的长度有多少个零)嗯,System.out.println(“00000”)怎么样
?你想实现什么?我不是想粗鲁,但你似乎真的不明白问题所在。如果你暗示我这样做的话,我不应该对我的驱动程序类做任何更改,我该如何重写toString()?如果你不想要,和[]你可以使用return array.toString(数字).replaceAll(“,|\[|\]|”,”);
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);
}
}