我试图在使用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();
行
是method is undefined for the type String
我做错了什么?如果有人需要,我可以在完整的代码中发布。
答案 0 :(得分:3)
这看起来像问题:
InetAddress ip1=InetAddress.getByName(queryip);
ipresult=queryip.getHostName();
我怀疑你的意思是:
InetAddress ip1 = InetAddress.getByName(queryip);
ipresult = ip1.getHostName();
基本上,您在getHostName
上呼叫queryip
,而不是ip1
。然后你对第二段代码有完全相同的错误 - 这看起来与第一篇文章非常相似,你应该考虑提取一种可以在两种情况下调用的方法。
但是,您不应该只是修复您的代码。你应该退后一步,弄清楚为什么你自己无法解决这个问题:
不知道事情不是问题 - 如果你没有从错误中吸取教训,这是一个问题。
答案 1 :(得分:1)
下面的代码将有助于
String clientIp = request.getRemoteHost();
System.out.println(clientIp);
InetAddress Address =InetAddress.getByName(clientIp);
System.out.println("Testing client name:"+Address.getHostName());
答案 2 :(得分:0)
getHostAddress()
未定义String类型。它是类InetAddress
的一种方法,但您在queryweb
上调用它String
答案 3 :(得分:0)
queryip是
的字符串类型 String ipresult,queryip=inputip.getText();
您收到该错误,因为字符串没有方法getHostName()。现在,如果您要初始化具有此类方法的对象,则可以调用它。只需从您的代码中猜测就可以实现:
ipresult=ip1.getHostName();
你应该有一个具有字符串字段的对象并且有一个方法getHostName()。您可能想要使用方法getHostName(String ip)来考虑静态类。这一切都取决于您需要多少InetAddress对象