类的概述·main方法中参数String[] argv的意义讲解

Java主方法参数解析
本文介绍Java程序中主方法如何通过字符串数组接收并解析命令行参数。通过示例程序演示了不同参数组合下程序的响应行为。
Java程序中主 main方法中参数定义了一个字符串数组argv(argv 名为任意),实质是用来从命令行接收用户参数的。采用命令行执行 Java程序的语句由四个部分组成:


第一部分为命令各;

第二部分是命令参数,是可选的;

第三部分为应用程序的名称,即源文件中的主类类名;

第四部分为用户输入的参数,多个参数之间用空格分隔。


若用户输入参数,则从类名后开始,第一个参数存储字符串数组元数 argv[0]中,第二个参数存于 arg[1]中,以此类推。以下为一个测试参数 args 的简单程序:

public class MianDemo {
    public static void main(String[] args) {
        if(args.length>0) {
            if(args.length == 1) {
                if(args[0].equals("-h"))
                    System.out.println("Hello!");
                else if(args[0].equals("-b"))
                    System.out.println("Bye!");
            } else if(args.length == 2) {
                if(args[0].equals("-h"))
                    System.out.println("Hello, " + args[1]);
                else if(args[0].equals("-b"))
                    System.out.println("Bye, " + args[1]);
            } else
                System.out.println("Error");
        } else  {
            System.out.println("There hava any parameter!");
        }
    }
}



在控制窗口测试时:

如果用户输入的是 java MainDemo -h,执行结果为:Hello!;

如果用户输入的是 java MainDemo -b,执行结果为:Bye!;

如果用户输入的是 java MainDemo -h HuSuMiao,则执行结果为:Hello, HuSuMiao;

如果用户输入的是 java MainDemo -b HuSuMiao,则执行结果为:Bye,HuSuMiao;
以下是对给定 ROS 订阅方代码中每一行代码的详细解释: ```cpp #include "ros/ros.h" ``` 这行代码包含了 ROS(机器人操作系统)的核心头文件 `ros/ros.h`,它提供了 ROS 编程所需的基本功能和数据结构,是编写 ROS 节点必不可少的头文件。 ```cpp #include "plumbing_pub_sub/Person.h" ``` 这行代码包含了自定义消息型 `Person` 的头文件。`plumbing_pub_sub` 是功能包的名称,`Person.h` 是根据自定义的 `Person.msg` 文件自动生成的头文件,用于在代码中使用 `Person` 消息型。 ```cpp /* 订阅方: 1.包含头文件 2.初始化ROS节点 3.创建节点句柄 4.创建订阅者对象 5.处理订阅到的数据 6.调用spin()函数 */ ``` 这是一段注释,它概述了编写 ROS 订阅方节点的主要步骤,帮助开发者理解代码的整体结构和功能。 ```cpp void doPerson(const plumbing_pub_sub::Person::ConstPtr& person) { ROS_INFO("订阅的人的信息:%s,%d,%.2f",person->name.c_str(),person->age,person->height); } ``` 这是一个回调函数 `doPerson`,当订阅者接收到新的 `Person` 消息时,ROS 会自动调用这个函数。函数的参数 `const plumbing_pub_sub::Person::ConstPtr& person` 是一个指向 `Person` 消息的常量智能指针,通过它可以访问 `Person` 消息的各个字段。在函数内部,使用 `ROS_INFO` 函数将订阅到的人的信息(姓名、年龄、身高)输出到控制台。`person->name.c_str()` 将 `std::string` 型的 `name` 字段转换为 C 风格的字符串,以便 `ROS_INFO` 函数能够正确处理。 ```cpp int main(int argc,char *argv[]) { ``` 这是程序的入口函数 `main`,`argc` 和 `argv` 分别是命令行参数的数量和参数数组,用于传递启动节点时的相关参数。 ```cpp setlocale(LC_ALL,""); ``` 这行代码设置了程序的本地化环境,使得程序能够正确处理中文等多字节字符。在输出包含中文的日志信息时,这一步是必要的,否则可能会出现乱码问题。 ```cpp ROS_INFO("订阅方实现"); ``` 这行代码使用 `ROS_INFO` 函数输出一条日志信息,表明订阅方节点已经启动。 ```cpp ros::init(argc,argv,"jiazhang"); ``` 这行代码初始化 ROS 节点,`argc` 和 `argv` 是命令行参数,`"jiazhang"` 是节点的名称。`ros::init` 函数必须在使用 ROS 的其他功能之前调用,它会解析命令行参数,并将节点注册到 ROS 主节点上。 ```cpp ros::NodeHandle nh; ``` 这行代码创建了一个 ROS 节点句柄 `nh`,节点句柄是与 ROS 系统进行通信的重要接口,它提供了创建订阅者、发布者、服务客户端等功能的方法。 ```cpp ros::Subscriber sub=nh.subscribe("liaoTian",10,doPerson); ``` 这行代码创建了一个订阅者对象 `sub`,通过节点句柄 `nh` 的 `subscribe` 方法实现。`"liaoTian"` 是要订阅的话题名称,`10` 是消息队列的大小,表示当消息处理速度跟不上消息发布速度时,最多可以缓存 10 条消息。`doPerson` 是回调函数,当订阅者接收到新的消息时,会调用这个函数进行处理。 ```cpp ros::spin(); ``` 这行代码调用了 `ros::spin()` 函数,它的作用是进入一个循环,不断处理接收到的消息。当有新的消息到达时,会调用相应的回调函数进行处理。`ros::spin()` 会一直运行,直到节点被关闭。 ```cpp return 0; ``` 这行代码表示程序正常结束,返回值为 0。 ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值