从命令行检查字符数

时间:2019-02-01 02:54:47

标签: java command-line

我正在尝试解决此问题:编写一个程序,该程序将字符串传递给命令行并显示字符串中大写字母的数量。

测试是ProgrammingIsFun,所以计数为3。

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

public static void main(String[] args) {


    int count = 0;


    for(int i = 0; i < args.length;i++) {
        for(int j = 0; j >= i; j++)
        if(Character.isUpperCase(args[i].charAt(j)))
            count++;
    }
    System.out.print("The number of upper cases are: " + count);
}

在运行时它会计算正确的大写字母数,但在到达字符末尾时会运行(16)。我不知道如何在最后一个字符之后立即停止循环。我知道计数是正确的,因为我可以在调试中看到它。我可以在变量中看到名为arg0的东西。该字符数正确,但我不能使用。

我仍在学习,暂时无法使用对象或类似对象。 任何帮助,将不胜感激。或者,如果您能指出我可以阅读的地方。我尝试了这些文档,但数量很多,很快就不知所措。

3 个答案:

答案 0 :(得分:0)

for(int j = 0; j < args[i].length(); j++)

这将汇总作为参数传递的所有字符串的所有大写字母。 如果只需要一个字符串,则代码可能会更简单。

答案 1 :(得分:0)

内循环有错误:

for(int j = 0; j >= i; j++)

请注意,外循环针对每个命令行参数运行,内循环针对i给定的参数的每个字符运行。

因此将其更改为

for(int j = 0; j < args[i].length(); j++)

答案 2 :(得分:0)

要使您的代码更易于阅读(和编写),应使用foreach循环,对于args数组中的每个字符串,应使用一个循环,对于数组中的每个字符,应使用一个循环foo.toCharArray()foreach循环的语法如下:

for (type var : iterable) {
    // Code here
}

iterable是带有Iterable接口(通常是数组或ArrayList)的地方。

我们可以在您的代码中切换这些内容,并使其更易于阅读:

String[] args = {"ProgrammingIsFun!", "When It Works..."};

int count = 0;
for (String e : args) {
    for (char f : e.toCharArray()) {
        if (Character.isUpperCase(f)) {
            count++;
        }
    }
}
System.out.print("The number of upper cases are: " + count);