命令行参数

时间:2017-11-09 11:50:17

标签: java command-line-arguments

我创建了一个名为Human的类,它可以正常工作,需要2个参数,年龄和名称来创建人类。

要使用命令行参数创建一个Human,我想写

  

java文件名-H“Anna”25

它应该创建一个人thatname="Anna"thatage=25,其中25是一个int。

我编写的代码是创建一个名为Argument的列表,并通过它迭代查找-H。我需要这样做,因为我将在以后使用它来创建不同的类。我只需要帮助我编写thename=theage=行的语法,因为我不知道如何获取next item in listnext-next item in list

public static void main(String[] args) {
    ArrayList<String> Argument = new ArrayList<String>();       

    for (String item: args) {
        Argument.add(item);         
    }

    for (String item2: Argument) {
        if (item2 == "-H") {
            thatname = Argument.get(item2+1)
            thatage = Argument.get(item2+2)
            Human person = new Human(thatname,thatage);
            System.out.println(person);
        }

5 个答案:

答案 0 :(得分:1)

为什么不循环args?

for ( int i = 0; i < args.length; i++ ) }
    if (args[i].equals("-H")) {
       i++;
       thatName = args[i];
       i++;
       thatAge = args[i];
    }
}

如果没有遵循您设置的规则,您应该添加一些代码来捕获。可能没有足够的论点或人类在键盘上做的其他事情......

答案 1 :(得分:1)

thatname = Argument.get(Argument.indexOf(item2)+1);
thatage = Argument.get(Argument.indexOf(item2)+2);

或者你知道第一个元素是-H,第二个元素是name,第三个元素是age,所以你可以直接使用下面的代码

thatname = Argument.get(1);
thatage = Integer.parseInt(Argument.get(2));

答案 2 :(得分:1)

您的代码存在一些问题,请让我向您解释一下。

  1. 您无法将字符串与==进行比较,您必须使用等于方法 在String中比较两个字符串。
  2. 你必须使用它来循环 for(int i = 0; i&lt; Argument.size(); i ++)语法,以便您可以从零迭代到数字 列表中的项目。
  3. ArrayList中的
  4. get 方法将索引作为参数并返回该索引处的值。
  5. 您可以添加 i + = 2 以跳过接下来的两次迭代 返回人的名字和年龄值。 (这是可选的)
  6. 以下是工作代码:

    public static void main(String[] args) {
    ArrayList<String> Argument = new ArrayList<String>();       
    
    for (String item: args) {
        Argument.add(item);         
    }
    
    String currentItem; 
    for (int i = 0; i < Argument.size(); i++) { // it will iterate through all items
    
        currentItem = Argument.get(i); // getting the value with index;
    
        if (currentItem.equals("-H")) {
    
            String thatname = Argument.get(i+1);
            String thatage = Argument.get(i+2);
    
            i += 2; // Skipping 2 iterations of for loop which have name and age human.
    
            Human person = new Human(thatname,thatage);
            System.out.println(person);
    
            }
    
        }
    }
    

答案 3 :(得分:0)

为什么在直接使用args时使用数组列表?虽然你只有两个参数,但不要使用for循环访问它们直接。 你应该知道的一件事是String是java中的一个对象,所以比较两个带有==符号的字符串将返回false,即使它们具有相同的值(==将比较对象的id),你应该使用{{ 1}}比较对象值的函数。

查看此代码:

.equale()

答案 4 :(得分:0)

您无法使用> php index.php start: 00:01:48,387<br /> stop: 00:01:53,269<br /> startMS: 108387<br /> stopMS: 113269<br /> text: ┘ç┘à╪د┘ç┘┌»█î ╪▓█î╪▒┘┘ê█î╪│ ╪ذ╪د ┌ر█î┘█î╪ز ╪ذ┘┘ê╪▒█î ┘ê ┌ر╪»┌ر x265 =====================<br /> start: 00:02:09,360<br /> stop: 00:02:12,021<br /> startMS: 129360<br /> stopMS: 132021<br /> text: .┘à╪د ┘╪ذ╪د┘è╪» ╪ز┘┘ç╪د┘è┘è ╪د┘è┘╪ش╪د ╪ذ╪د╪┤┘è┘à - ┌╪▒╪د ╪ا<br /> =====================<br /> start: 00:02:12,022<br /> stop: 00:02:14,725<br /> startMS: 132022<br /> stopMS: 134725<br /> text: ..╪د┌»┘ç ┘╛╪»╪▒╪ز - .╪د┘ê┘ ┘ç┘è┌┘ê┘é╪ز ┘à╪ز┘ê╪ش┘ç ╪▒┘╪ز┘┘à┘ê┘ ┘┘à┘è╪┤┘ç -<br /> =====================<br /> 迭代列表。迭代列表时,您需要一个索引号,如String

list.get(indexNumber);