Java对象在for循环外返回null 公共帐户[]搜索(双倍余额){ 布尔标志=假; 账户[]tmp=新账户[账户长度]; //循环,直到帐户数组结束。 如果我理解你的问题,你只是有点困惑- public Account [] search(double bal){ boolean flag=false; Account [] tmp = new Account[account.length]; //Loop until the end of the account array. for(int i=0;i<account.length && account[i]!=null;i++) { if(account[i].getBal()==bal) { tmp[i]=account[i]; System.out.println(tmp[i]); //here returns correct value flag=true; } } System.out.println(tmp[0]); //here returns null return tmp; } 公共帐户[]搜索(双倍余额){ int标志=0; 账户[]tmp=新账户[账户长度]; //循环,直到帐户数组结束。 对于(int i=0;i
中的 如果计数器i==0时条件为false,则tmp[0]最终将为null。您可以将ArrayList与tmp变量一起使用,然后将其转换为帐户数组,如下所示:Java对象在for循环外返回null 公共帐户[]搜索(双倍余额){ 布尔标志=假; 账户[]tmp=新账户[账户长度]; //循环,直到帐户数组结束。 如果我理解你的问题,你只是有点困惑- public Account [] search(double bal){ boolean flag=false; Account [] tmp = new Account[account.length]; //Loop until the end of the account array. for(int i=0;i<account.length && account[i]!=null;i++) { if(account[i].getBal()==bal) { tmp[i]=account[i]; System.out.println(tmp[i]); //here returns correct value flag=true; } } System.out.println(tmp[0]); //here returns null return tmp; } 公共帐户[]搜索(双倍余额){ int标志=0; 账户[]tmp=新账户[账户长度]; //循环,直到帐户数组结束。 对于(int i=0;i,java,arrays,Java,Arrays,中的 如果计数器i==0时条件为false,则tmp[0]最终将为null。您可以将ArrayList与tmp变量一起使用,然后将其转换为帐户数组,如下所示: if(account[i].getBal()==bal) { tmp[i]=account[i]; System.out.println(tmp[i]); //here returns correct value flag=true; }
if(account[i].getBal()==bal)
{
tmp[i]=account[i];
System.out.println(tmp[i]); //here returns correct value
flag=true;
}
}
公共帐户[]搜索(双倍余额){
ArrayList tmp=新的ArrayList();
对于(int i=0;i如果第一个条件为false,则始终temp[0]
将为null
public Account [] search(double bal){
ArrayList<Account> tmp = new ArrayList<Account>();
for(int i=0;i<account.length && account[i]!=null;i++)
{
if(account[i].getBal()==bal)
{
tmp.add(account[i]);
System.out.println(tmp[i]); //here returns correct value
}
}
Account resultArray[] = new Account[tmp.size()];
resultArray = tmp.toArray(resultArray);
return resultArray;
}
因为在此代码中,如果第一个条件仅正确,它将进入“if”
条件,然后将account[i]
的值分配给temp[0]
。否则它将永远为空。拿出笔和纸,运行程序,标记每个对象的值。或者,使用调试器。
public Account [] search(double bal){
ArrayList<Account> tmp = new ArrayList<Account>();
for(int i=0;i<account.length && account[i]!=null;i++)
{
if(account[i].getBal()==bal)
{
tmp.add(account[i]);
System.out.println(tmp[i]); //here returns correct value
}
}
Account resultArray[] = new Account[tmp.size()];
resultArray = tmp.toArray(resultArray);
return resultArray;
}
if(account[i].getBal()==bal)
{
tmp[i]=account[i];
System.out.println(tmp[i]); //here returns correct value
flag=true;
}