关于eclipse:在Java中作为命令行参数运行此程序时出错,我该如何解决这个问题?

Getting an error running this program as a command line argument in Java, how can I fix this?

当我试图在Eclipse中作为命令行参数运行这个程序时,我得到了一个错误。错误是这样说的:

错误:在类中找不到主方法,请将主方法定义为:公共静态void main(string[]参数)或者javafx应用程序类必须扩展javafx.application.application

当我将main方法更改为string时,就不能调用第二个方法,因为string main方法与int returnsum方法不兼容。

根据需要,我需要将ReturnSums方法设置为int类型的方法,但我无法在不出现错误的情况下解决此问题。它在需求中说,我需要为方法使用可变数量的参数,但是很难理解这个想法。

有人能帮我吗?这是我的代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
public static void main(int[] args) {

    // Printing the entered digits
    System.out.print("Passing");
    System.out.print(" [");

    for (int nums = 0; nums < args.length; nums++) {
        System.out.print(args[nums] +"");

    }
    System.out.print("]");
    System.out.println("
Sum is"
+ returnSum(args)); // Calling on the second method for the sum

}
// Taking the nums from the main method as arguments
public static int returnSum(int...args) {
    int sum = 0;
    // Calculating the sum
    for (int nums = 0; nums < args.length; nums++) {
        sum = sum + nums;
    }
    return sum;

}

谢谢您!


尝试以下代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
public class SumOfNumbers {
    public static void main(String[] args) {

        int[] intArgs = new int[args.length];
        for (int x = 0; x < args.length; x++) {
            if (args[x].matches("\\d+")) {
                intArgs[x] = Integer.parseInt(args[x]);
            } else {
                System.out.println(args[x] +" is not a Integer hence skiped in this program");
            }
        }

        // Printing the entered digits
        System.out.print("Passing");
        System.out.print(" [");

        for (int nums = 0; nums < intArgs.length; nums++) {
            System.out.print(intArgs[nums] +"");

        }
        System.out.print("]");
        System.out.println("
Sum is"
+ returnSum(intArgs)); // Calling on the second method for the sum

    }

    // Taking the nums from the main method as arguments
    public static int returnSum(int... args) {
        int sum = 0;
        // Calculating the sum
        for (int nums = 0; nums < args.length; nums++) {
            sum = sum + args[nums];
        }
        return sum;
    }
}


@桑杰:如果你尝试论证:10, 20 , 30你会得到以下输出:

1
2
3
4
10, is not a Integer hence skiped in this program
, is not a Integer hence skiped in this program
Passing [ 0 20 0 30 ]
Sum is 50

不应只忽略,应忽略。此外,进口应为3号(包括10号)或2号(不包括10号),不应为4号。


您需要让您的主要方法签名是(String[] args),但是您可以循环使用代码中的args数组,使用Integer.parseInt()将每个元素转换为int,将它们存储在一个新数组(类型为int[])中,并将这个新数组发送到returnSum


将主方法的参数改回String[],因为这是必需的签名。

在主方法中,将每个参数解析为一个int

1
2
3
int[] intArgs = new int[args.length];
for(int x=0; x<args.length; x++)
    intArgs[x] = Integer.parseInt(args[x]);

请注意,如果您没有传递任何参数或不是整数的参数,这将中断。如果您想处理这个问题,您可以在之前检查args!=null,并围绕这个代码捕获NumberFormatException