无法在另一种方法中调用args

时间:2014-09-11 11:00:21

标签: java methods args

java中的新功能。我试图将方法添加到我当前正在运行的程序中,以打印出来自args数组的大量字符。尝试安装新方法,我在调用args方面遇到了麻烦。这是我目前的代码,红色轮廓是。

static void amountOfCharsInSentence() {
    int sum=0;
    for (String s: args) {  //args on this line is marked red
        sum+=s.length();
    }
}

public static void main(String[] args) {
   amountOfCharsInSentence();
}

任何正确方向的提示或提示都将受到赞赏。

2 个答案:

答案 0 :(得分:0)

你没有通过args。

static void amountOfCharsInSentence(String[] args) {
int sum=0;
for (String s: args) {  //now it will not give red line. 
                        // red line is indicated because there is no args inside this method
    sum+=s.length();
}
}

 public static void main(String[] args) {
  amountOfCharsInSentence(args);
 }

希望这能解决您的问题

答案 1 :(得分:0)

argsmain的参数,这意味着您只能在main中使用该参数(类似于局部变量)。

如果您想在其他地方使用它,您有两种选择。最合适的是将其作为参数传递给您的其他函数:

static void amountOfCharsInSentence(String[] args) {
// Declare argument here -----------^^^^^^^^^^^^^
    int sum=0;
    for (String s: args) {  // `args` here is the argument to *this* function
        sum+=s.length();
    }
}

public static void main(String[] args) {
    amountOfCharsInSentence(args);
    // Pass it here --------^^^^
}

您的另一个选择是创建类的静态成员,该类中的所有方法都可以访问该成员,并将args分配给该静态成员:

class YourClass {

    static String[] commandLineArgs;

    static void amountOfCharsInSentence() {
        int sum=0;
        for (String s: commandLineArgs) { // Use the static member here
            sum+=s.length();
        }
    }

    public static void main(String[] args) {
        commandLineArgs = args;           // Assign the static member here
        amountOfCharsInSentence();
    }
}

......但在这种情况下,这可能不合适。