1

我想在 ubuntu 中使用来自控制台的参数

./myTool -ip 1.2.3.4

我怎样才能在我的代码中使用 1.2.3.4

public static void main(String[] argv) throws Exception
{


    for(int i=0;i<argv.length;i++)
    {
        if (argv[i].equals("-ip"))
        {

         ping(80,"The ip that i want(1.2.3.4)")
        }
     }
}
4

3 回答 3

2

尝试:

public static void main(String[] argv) throws Exception
{
    for(int i=0;i<argv.length;i++)
    {
        if (argv[i].equals("-ip") && argv.length > i+1)
        {
            ping(80, argv[i+1]);
        }
    }
}

假设你实施ping了,当然。

于 2013-04-18T09:26:10.917 回答
2

对于解析 cmdline 参数的更通用方法,我建议使用现有框架之一 - 它们为您完成所有繁重的工作。

看看JOpt Simple - 例如,这个是使用的。OpenJDK。

于 2013-04-18T09:30:32.510 回答
2

您可以将所需的行为封装到您自己设计的对象中,也可以使用已经存在的对象,例如来自 Apache的对象。

您必须确保它们成对出现。像这样的东西:

public static Map<String, String> getArgsMap(String [] args) { 
    Map<String, String> pairs = new HashMap<String, String>();
    if ((args != null) && (args.length > 1) && (args.length % 2) == 0) {
        for (int i = 0; i < args.length; i += 2) {
            pairs.put(args[i], args[i+1]);
        }
    }
    return pairs;
}
于 2013-04-18T09:32:04.333 回答