循环遍历所有main()参数

时间:2014-03-03 15:27:01

标签: java for-loop foreach arguments main

  • 应用程序将使用以下命令请求一系列输入字/字符串 主要论点。
  • 它将确定是否输入每个输入字符串 以辅音,元音,奇数,偶数或a结尾 特殊符号。
  • 它还应该能够计算数量 每个字输入的字符。

到目前为止,这就是我所拥有的:

public static void main(String[] args) {
    if(args.length > 0) {
        String regExVowels = ".*[AEIOUaeiou]$";
        // regEx Strings

        char[] caMainArg = null;
        String strMainArg = null;

        for(String arg: args) {
            // Convert each String arg to char array
            caMainArg = arg.toCharArray();

            // Convert each char array to String
            strMainArg = new String(caMainArg);
        }

        System.out.print(strMainArg + " - " + strMainArg.length());

        // if-else conditions

    } else {
        System.out.println("No arguments passed!");
    }
}

它有效,但它只需要最后一个参数。例如:

Eclipse>运行配置...>参数

kate middleton sep30 jan25 `

只会输出:

` - 1 - special character

我想要的输出是:

kate - 4 - vowel
middleton - 9 - consonant
sep30 - even number
jan25 - odd number
` - 1 - special character

我不确定如何遍历参数并打印出适当的结果。

3 个答案:

答案 0 :(得分:3)

您过早关闭for循环。

你这样做:

   for(String arg: args) {
        // Convert each String arg to char array
        caMainArg = arg.toCharArray();

        // Convert each char array to String
        strMainArg = new String(caMainArg);
    }
    System.out.print(strMainArg + " - " + strMainArg.length());

    if(regExVowels.matches(strMainArg)) {
        System.out.print(" - vowel");

    } else if(regExUpperConsonants.matches(strMainArg) ||

    .....

你需要这样做:

   for(String arg: args) {
        // Convert each String arg to char array
        caMainArg = arg.toCharArray();

        // Convert each char array to String
        strMainArg = new String(caMainArg);
        System.out.print(strMainArg + " - " + strMainArg.length());

        if(regExVowels.matches(strMainArg)) {
            System.out.print(" - vowel");

        } else if(regExUpperConsonants.matches(strMainArg) ||

        ....

    }

答案 1 :(得分:1)

穿戴,

    System.out.print(strMainArg + " - " + strMainArg.length());

    if(regExVowels.matches(strMainArg)) {
        System.out.print(" - vowel");

    } else if(regExUpperConsonants.matches(strMainArg) ||
            regExLowerConsonants.matches(strMainArg)) {
        System.out.print(" - consonant");

    } else if(regExEven.matches(strMainArg))    {
        System.out.print(" - even number");

    } else if(regExOdd.matches(strMainArg)) {
        System.out.print(" - odd number");

    } else {
        System.out.print(" - special character");
    }

在你已经拥有的循环中,循环遍历参数,你的“for(String arg:args){”行约10行。

答案 2 :(得分:0)

是的,因为你应该移动它:

System.out.print(strMainArg + " - " + strMainArg.length());

if(regExVowels.matches(strMainArg)) {
    System.out.print(" - vowel");

} else if(regExUpperConsonants.matches(strMainArg) ||
    regExLowerConsonants.matches(strMainArg)) {
    System.out.print(" - consonant");

} else if(regExEven.matches(strMainArg))    {
    System.out.print(" - even number");

} else if(regExOdd.matches(strMainArg)) {
    System.out.print(" - odd number");

} else {
    System.out.print(" - special character");
}
你在循环中循环,因为想要检查你的所有参数,而不仅仅是最后一个参数。