有谁可以告诉我为什么我的上一个退货声明不起作用?
public class IpAddress
{
private String dottedDecimal;
private int[] Octet= new int[4];
public int i;
//Default constructor
public IpAddress()
{
dottedDecimal = "0.0.0.0";
for (i=0; i<=3; i++)
{
Octet[i] = 0; //setting the array to zero
}
} // end default constructor
//************************************
//Specified constructor
public IpAddress(String myAddress)
{
dottedDecimal = myAddress;
String[] parsedOctets;
parsedOctets = myAddress.split("\\Q.\\E"); // allows to stop at the dot
for (i=0; i <=3; i++)
{
Octet[i] = Integer.parseInt(parsedOctets[i]); // breaking the string down to integers
}
}// end specified constructor
//*****************************************************
public String getDottedDecimal()
{
return dottedDecimal;
}
//*********************
public int getOctet()
{
for (this.i=0; this.i <=3; this.i++)
{
return this.Octet[i];
}
}
} // end ip address class
答案 0 :(得分:4)
看起来像我的作业,但这显然不起作用:
public int getOctet()
{
for (this.i=0; this.i <=3; this.i++)
{
return this.Octet[i];
}
}
这将在第一次迭代后从函数返回,不能多次从函数返回。
答案 1 :(得分:3)
我认为你想要的最后一种方法是:
public int getOctet( int which )
{
if ( which >= 0 && which <= 3 )
return this.Octet[ which ];
else
return -1; // error. Consider throwing an exception
}
答案 2 :(得分:0)
对于你的上一个语句,你正在运行一个循环,它只返回一个值。它将在第一次返回,但随后循环停止运行,因此其他返回不执行任何操作。
public int getOctet()
{
for (this.i=0; this.i <=3; this.i++)
{
return this.Octet[i];
}
}
这相当于:
return this.Octet[0];
因为它只运行一次。
答案 3 :(得分:0)
如果您的意思是“获取八位字节”功能,它将只返回Octet[0];
return语句在第一次命中时停止执行该函数。你真正想要的是:
public int[] getOctet()
{
return this.Octet;
}
答案 4 :(得分:0)
通过命名方法getOctect()
,您似乎希望返回数组,而不是数组中的单个int。在这种情况下,您应该将其简化为:
public int[] getOctet()
{
return this.Octet;
}