我正在尝试解决此问题:编写一个程序,该程序将字符串传递给命令行并显示字符串中大写字母的数量。
测试是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的东西。该字符数正确,但我不能使用。
我仍在学习,暂时无法使用对象或类似对象。 任何帮助,将不胜感激。或者,如果您能指出我可以阅读的地方。我尝试了这些文档,但数量很多,很快就不知所措。
答案 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);