为什么我的程序toString不能输出
这个程序要在一个array里面添加数字, 删除数字, 算array里的以用空间,但是我现在就测试了一下加数字,然后我要输出这个数字,为什么我输入完数字以后程序就结束了,是我的toString有问题,还是add这个method有问题? 高手帮我看一下public class IAS
{
private int [] a=new int[2];
/*public IAS ()
{
}*/
public void add(int num)
{
int i=0, size, count=0;
do
{
if(a[i]==0)
{
a[i]=num;
count++;
}
else if(a[i]!=0 && i<a.length)
i++;
else if(i>=a.length)
{
size=a.length*2;
int a[]=new int[size];
}
}while (count==0);
}
public void add(int num1, int num2, int num3, int num4)
{
int i=0, size, count=0;
do
{
if(a[i]==0 && i+4<a.length)
{
a[i]=num1;
a[i+1]=num2;
a[i+2]=num3;
a[i+3]=num4;
count++;
}
else if(a[i]!=0 && i<a.length)
i++;
else if(i+4>=a.length)
{
size=a.length*2;
int a[]=new int[size];
}
}while (count==0);
}
public void clear()
{
int a[]=new int[2];
for (int i=0; i<2; i++)
a[i]=0;
}
public boolean contains(int num)
{
int count=0;
for(int i=0; i<a.length; i++)
{
if(a[i]==num)
count++;
}
if(count>0)
return true;
else
return false;
}
/*public IAS copy()
{
int size=a.length;
int[] array=new array[size];
for(int i=0; i<size; i++)
array[i]=a[i];
return array[];
}*/
/*
public boolean equals(IAS array)
{
int count=0;
for(int i=0; i<a.length; i++)
{
if(a[i]==array[i])
count=0;
else
count++;
}
if(count==0)
return true;
else
return false;
}*/
public boolean isEmpty()
{
int count=0;
for(int i=0; i<a.length; i++)
{
if(a[i]!=0)
count++;
}
if(count==0)
return true;
else
return false;
}
public void remove(int num)
{
for(int i=0; i<a.length; i++)
{
if(a[i]==num)
{
for(int j=i; j>=0; j--)
a[j]=a[j+1];
}
}
}
public int size()
{
int count=0;
for(int i=0; i<a.length; i++)
{
if(a[i]!=0)
count++;
}
return count;
}
public String toString()
{
String str= "{ " + a + " }";
return str;
}
}
import java.util.Scanner;
public class IAStest
{
public static void main (String[] args)
{
int num;
IAS one=new IAS();
IAS two=new IAS();
Scanner keyboard=new Scanner(System.in);
System.out.print("Enter a number: ");
num=keyboard.nextInt();
one.add(num);
one.toString(); //当我输入完数字后程序就结束了,怎么回事?
}
}
----------------解决方案--------------------------------------------------------
Object a=new Object();
System.out.println(a);//a不为null时,自动调用a对象的toString方法
toString并不是像楼主想的那样直接输出到控制台的
----------------解决方案--------------------------------------------------------
支持ls,事实上它支持很多重载.
lz使用有误,首先请看.
程序代码:
public String toString()
{
String str= "{ " + a + " }";
return str;//这里只是返回字符串而已,并没有输出.
}
{
String str= "{ " + a + " }";
return str;//这里只是返回字符串而已,并没有输出.
}
所以,需要输出
程序代码:
System.out.println(one.toString());
再看这种情况:(以下情况,toString()方法中有输出,所以可以直接调用)
程序代码:
public String toString()
{
String str= "{ " + a + " }";
System.out.println(str);
return str;
}
{
String str= "{ " + a + " }";
System.out.println(str);
return str;
}
直接调用:
程序代码:
one.toString();
至于为什么输出的是地址,就不要我说了吧。
----------------解决方案--------------------------------------------------------