-1

我正在尝试在使用 Swing 创建的工具中将 IP 转换为网址,反之亦然。动作监听器部分在这里

public void actionPerformed(ActionEvent e)
{
    if(e.getSource()==check1)
    {
        String ipresult,queryip=inputip.getText();

        try
        {
            InetAddress ip1=InetAddress.getByName(queryip);
            ipresult=queryip.getHostName();
            outputweb.setText(ipresult);        
        }
        catch(Exception e1)
        {
            outputweb.setText("Please check the IP address");
        }
    }

    if(e.getSource()==check2)
    {
        String webresult,queryweb=inputweb.getText();
        try
        {
            InetAddress web1=InetAddress.getByName(queryweb);
            webresult=queryweb.getHostAddress();
            outputip.setText(webresult);

        }
        catch(Exception e2)
        {

        }
    }
}

我在 Eclipse 上这样做,所以它在行上说的webresult=queryweb.getHostAddress();错误ipresult=queryip.getHostName();method is undefined for the type String

我做错了什么?如果有人需要,我可以发布完整的代码。

4

4 回答 4

3

好吧,这看起来像问题:

InetAddress ip1=InetAddress.getByName(queryip);
ipresult=queryip.getHostName();

我怀疑你的意思是:

InetAddress ip1 = InetAddress.getByName(queryip);
ipresult = ip1.getHostName();

基本上你是在打电话getHostNamequeryip而不是在ip1。然后,您对第二段代码有完全相同的错误 - 它看起来与第一段非常相似,您应该考虑提取一个可以在两种情况下调用的方法。

但是,您不应该修复您的代码。你应该退后一步,弄清楚为什么你不能自己解决这个问题:

  • 您是否仔细阅读了错误信息?
  • 您是否仔细查看了代码,以找出编译器抱怨该行的原因?
  • 你真的理解(从语言的角度)你的每一行代码吗?

不知道事情不是问题——如果你不从错误中吸取教训,那就是问题。

于 2013-06-27T17:44:40.877 回答
1

下面的代码将在这种情况下有所帮助

String clientIp  =  request.getRemoteHost();
System.out.println(clientIp);
InetAddress Address =InetAddress.getByName(clientIp); 
System.out.println("Testing client name:"+Address.getHostName());
于 2016-02-22T07:11:19.817 回答
0

getHostAddress()没有为 String 类型定义。它是该类的一种方法,InetAddress但您正在调用querywebString

于 2013-06-27T17:46:19.320 回答
0

queryip 是字符串类型

 String ipresult,queryip=inputip.getText();

您收到该错误是因为字符串没有方法 getHostName()。现在,如果您要初始化具有此类方法的对象,则可以调用它。只是从你的代码中猜测你应该做到:

 ipresult=ip1.getHostName();

您应该有一些具有字符串字段并具有方法 getHostName() 的对象。您可能需要考虑使用 getHostName(String ip) 方法的静态类。这一切都取决于您需要多少 InetAddress 对象

于 2013-06-27T17:48:42.870 回答