返回语句错误 - 解析IP地址字符串

时间:2009-10-23 01:12:42

标签: c# string

有谁可以告诉我为什么我的上一个退货声明不起作用?

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

5 个答案:

答案 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;

}