【问题标题】:Return a string in a try block在 try 块中返回一个字符串
【发布时间】:2012-11-10 19:30:22
【问题描述】:

我是一般编程新手,必须为我的课程用 Java 创建一个 IP 扫描器,而我目前遇到了困难。在朋友的帮助下,我能够从 jFrame 中获取 IP 地址并将其转换为 IP 号码。从那里我将它传递到一个公共字符串中,该字符串扫描地址。它目前可以毫无问题地循环遍历地址,但是我不知道如何将结果从 try 块中取出以显示在文本块中,就像您期望 IP 扫描仪所做的那样。这是我的代码:

private void jBtnPSScanActionPerformed(java.awt.event.ActionEvent evt) {                                           
        // TODO add your handling code here:


        //Get text from text boxes
        String pingSSIP1 = jTxtPSSIPOne.getText();
        String pingSSIP2 = jTxtPSSIPTwo.getText();
        String pingSSIP3 = jTxtPSSIPThree.getText();
        String pingSSIP4 = jTxtPSSIPFour.getText();
        String pingSEIP1 = jTxtPSEIPOne.getText();
        String pingSEIP2 = jTxtPSEIPTwo.getText();
        String pingSEIP3 = jTxtPSEIPThree.getText();
        String pingSEIP4 = jTxtPSEIPFour.getText();

        //Convert text into IP Numbers      
        long ipNumberS = 0;
        ipNumberS = ipNumberS + (Long.parseLong(pingSSIP1)*256*256*256) ;
        ipNumberS = ipNumberS + (Long.parseLong(pingSSIP2)*256*256) ;
        ipNumberS = ipNumberS + (Long.parseLong(pingSSIP3)*256) ;
        ipNumberS = ipNumberS + (Long.parseLong(pingSSIP4)) ;
        System.out.println (ipNumberS);
        long ipNumberE = 0;
        ipNumberE = ipNumberE + (Long.parseLong(pingSEIP1)*256*256*256) ;
        ipNumberE = ipNumberE + (Long.parseLong(pingSEIP2)*256*256) ;
        ipNumberE = ipNumberE + (Long.parseLong(pingSEIP3)*256) ;
        ipNumberE = ipNumberE + (Long.parseLong(pingSEIP4)) ;
        System.out.println (ipNumberE);


        String startAddress = Long.toString(ipNumberS);
        String endAddress = Long.toString(ipNumberE);

        String returnIP = pingSweep(startAddress, endAddress, ipNumberS, ipNumberE);

        System.out.println(returnIP);

        //Update jTxtBlock with returnIP and result

    }                                          

还有:

public String pingSweep (String startAddress, String endAddress, long ipNumberS, long ipNumberE) 
{
    String ip = "";


    for (long currIP = ipNumberS; currIP < ipNumberE; currIP++)
    {
        try {
            ip = Long.toString(currIP) ;
            System.out.println(currIP);
            InetAddress host = InetAddress.getByName(ip);
            System.out.println("Host Reachable? " + host.isReachable(4000));
            System.out.println(currIP);
            System.out.println(ip);
            ip = ip + " " + currIP + " " + host.isReachable(4000);
        }
        catch (UnknownHostException ex) {
            System.err.println(ex);
            break;
        }
        catch (IOException ex) {
            System.err.println(ex);
            break;
        }

    }
    return ip;
}

提前致谢!

马修

【问题讨论】:

  • jTxtBlock的类型是什么?是JTextArea吗?这不应该是一个猜谜游戏。
  • 我很抱歉,一个新手编码和这个论坛在他复制和粘贴的代码中包含他的验证。至少我正在向您展示我在看什么,如果我错了,有人可能会帮助我研究一些不同的东西。我需要的只是一点帮助。欺负别人。
  • @MatthewCurtis 常见问题解答适用于新手
  • @MatthewCurtis 他不是在欺负你,他只是简单地指出,当你寻求帮助或某种帮助时(在 any 论坛中,而不仅仅是 SO),你正在接受别人的时间为你自己的利益,在这种情况下,你有社会义务尽最大可能减少你的准助手的努力。如果没有尽量减少任何你知道对解决问题没有帮助的代码,你不仅没有履行你的义务,而且还在浪费其他人的时间。这不会让人们喜欢帮助你。
  • +1 说得好,@mah...这完全是关于给予和索取,因为不涉及金钱,所以它必须是社交的。

标签: java return try-catch


【解决方案1】:

所以这就是你所拥有的。要在 JFrame 上显示的字符串?是吗 ?

您可以在您的 JFrame 上添加一个标签并将您的字符串传递给该标签

详情请参考How to Label

PS : 如果你想使用 inputText、textArea 或任何你喜欢和要求的东西,使用 label 只是一个显示只读文本的建议

更新

OP 确认他正在使用 TextArea

提示:当您的 ping 收到响应时,jTextArea.append(host.isRechable) 方法将新值附加到 jTextArea。

【讨论】:

  • 不,我希望获取host.isReachable 的结果并将其显示在原始表单的文本区域中,即当用户按下jBtnPSScanActionPerformed 时。目前 System.out.println() 仅显示最终结果,而不是每个 ping 的每个单独结果。我希望每个结果都能在找到时显示在文本区域中。
  • @MatthewCurtis 它是一个文本区域。这真的无关紧要。所以你真正想做的是,当按下按钮时,在 textArea 中显示 ping(s)?
  • 正是@Mukul Goel,它需要执行 ping 扫描以确定网络上正在使用哪些地址。例如: 192.168.0.1 - 成功 192.168.0.2 - 失败 192.168.0.3 - 成功 192.168.0.4 - 成功 192.168.0.5 - 失败 192.168.0.6 - 失败......等等。我的尝试存储了最终结果,可以毫不费力地显示出来,但是我需要每个结果,无论是失败还是通过,都需要在文本区域中查看,并在找到结果时附加。
  • @MatthewCurtis,尝试使用jTextArea.append(host.isRechable) 方法将新值附加到 jTextArea
猜你喜欢
  • 2015-07-07
  • 1970-01-01
  • 2017-07-20
  • 2012-12-14
  • 2016-10-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-15
相关资源
最近更新 更多