Java 解析IP时类型字符串错误的Getting方法未定义

Java 解析IP时类型字符串错误的Getting方法未定义,java,network-programming,Java,Network Programming,我试图在使用Swing创建的工具中将IP转换为web地址,反之亦然。 这里是动作监听器部分 public void actionPerformed(ActionEvent e) { if(e.getSource()==check1) { String ipresult,queryip=inputip.getText(); try { InetAddress ip1=InetAddress.getByName

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

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()
is
方法对于类型字符串未定义


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

这看起来像是个问题:

InetAddress ip1=InetAddress.getByName(queryip);
ipresult=queryip.getHostName();
我猜你的意思是:

InetAddress ip1 = InetAddress.getByName(queryip);
ipresult = ip1.getHostName();
基本上,您是在
queryip
上调用
getHostName
,而不是在
ip1
上。然后,你对第二段代码有完全相同的错误——这看起来与第一个片段非常相似,你应该考虑提取一种在两种情况下都可以调用的方法。 但是,您不应该只修复代码。你应该退后一步,找出自己无法解决的原因:

  • 您是否仔细阅读了错误消息
  • 您是否仔细查看了代码,以了解编译器为什么会抱怨这行代码
  • 你真的理解(从语言的角度)你的每一行代码吗

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

getHostAddress()
没有为类型字符串定义。它是类
InetAddress
的一个方法,但您正在
queryweb
上调用它,queryweb是一个
String

queryip根据

 String ipresult,queryip=inputip.getText();
由于字符串没有getHostName()方法,因此无法获取该错误。现在,如果要初始化一个具有这样一个方法的对象,可以调用它。从您的代码中猜测,您应该:

 ipresult=ip1.getHostName();

您应该有一个具有字符串字段和方法getHostName()的对象。您可能想用GestToString(String IP)方法来考虑静态类。这完全取决于您需要多少InetAddress对象,下面的代码在这种情况下会有所帮助

String clientIp  =  request.getRemoteHost();
System.out.println(clientIp);
InetAddress Address =InetAddress.getByName(clientIp); 
System.out.println("Testing client name:"+Address.getHostName());

好这仍然是一个不知道的问题,这就是为什么SE站点通常有解决方案的原因:D。尽管答案很好,+1Oh-oops,谢谢。我没意识到我在给queryip打电话:<我的坏。。谢谢你把这件事弄清楚。