通过参数向我的程序传递值是什么意思?

What does it mean to pass a value through an argument to my program?

我最近 post 说我的代码不工作并显示消息:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
    at FactorialProgram5.main(FactorialProgram5.java:11)

使用代码:

import java.util.Scanner;

public class FactorialProgram5 {

    public static void main(String args[]) {
        long n;
        long fact = 1;
        n = 1;
        
        for (int i = 1; i <= n; i++) {
            n = Long.parseLong(args[0]);
            fact = fact * i;
        }

        System.out.print("fact=" + fact);
    }
}

有人说我必须给它传递参数并且数组是空的。将参数传递给代码是什么意思?我正在使用 Eclipse,有人告诉我必须转到参数选项卡并手动输入一个值,但我需要这样做,这样我也可以在命令提示符中使用此代码。我该怎么做?

那家伙说的是,在命令行中,您可以在 运行 运行 java 程序时输入参数,有点像这样:

<run-java-using-a-command> Bob Joe Bill

我省略了实际的 运行ning,因为如果您只是要使用 eclipse,那不是必需的。但是如果你 运行 它是这样的,那么 args 数组将是这样的:

[Bob, Joe, Bill]

您可以在程序中使用这些参数。在 Eclipse 中,您可以单击 Run | Run | Program Arguments(在屏幕顶部)来编辑参数。

您的主要方法是从命令行获取任何参数。例如,如果您首先在命令行上导航到 java 文件的位置: 键入这些命令。 1.javac filename.java 这将编译您的 .java 文件 2. java filename(如果你想 运行 不带参数)。 要将参数传递给您的文件,请使用: java filename argument

这里参数变成了String数组(main方法中的args)。

所以当这个文件被编译然后 运行 使用类似命令的东西 java filename 99 代码中的 n=Long.parseLong(args[0]); 行会将数字 99 插入到 args[0]。所以 n 将被设置为 99,或者每次你 运行 这个程序时你决定在命令行上 java filename 后键入的任何内容。

这意味着您需要在命令行中添加一个参数,以便您的程序找到并处理它。我在这个例子中使用的参数是数字 3.

我已经在命令行上编译并运行你的程序来展示它是如何工作的。

$ javac FactorialProgram5.java
$ java FactorialProgram5 3    
fact=6
$

注意:我在打印指令中添加了一个缺失的换行符

System.out.print("fact=" + fact);

变成

System.out.print("fact=" + fact + "\n");