java统计字符串中大小写字母及数字出现次数的两种方法

基本思路:通过for循环遍历字符串,通过String类中的charAt(int index)方法返回指定索引的字符,然后通过两种方法判断是否大小写字母或数字并进行统计,最后输出结果

方法一:

String s = "hjsdg639NJDHjkfh6439hbdJKSHEFLhjsdg";
int upper = 0;
int lower = 0;
int num = 0;
for(int i=0;i<s.length();i++) {
	char c = s.charAt(i);
	if(c>='A' && c<='Z') {
		upper++;
	}
	if(c>='a' && c<='z') {
		lower++;
	}
	if(c>='0' && c<='9') {
		num++;
	}
}
System.out.println("大写字母出现次数为"+upper+"次,小写字母出现次数为"+lower+"次,数字出现次数为"+num+"次");

方法二:

String s = "hjsdg639NJDHjkfh6439hbdJKSHEFLhjsdg";
int upper = 0;
int lower = 0;
int num = 0;
for(int i=0;i<s.length();i++) {
	char c = s.charAt(i);
	if(Character.isUpperCase(c)) {
		upper++;
	}
	if(Character.isLowerCase(c)) {
		lower++;
	}
	if(Character.isDigit(c)) {
		num++;
	}
}
System.out.println("大写字母出现次数为"+upper+"次,小写字母出现次数为"+lower+"次,数字出现次数为"+num+"次");

 

<think>嗯,用户想统计字符串中的大写和小写字母数量。我需要根据他们提供的编程示例来解答。首先,看引用里的例子,有Python和C两种方法。用户之前的问题可能更偏向Python,但引用的例子中有C的代码。不过用户现在没有指定语言,可能需要给出多种语言的解决方案。 用户的需求明确,只要统计小写字母,不需要数字或其他字符。那在代码中可以简化,只判断字符是否在'A'-'Z'或'a'-'z'之间。比如在Python中,可以用循环遍历每个字符,用计数器累加。或者用列表生成式结合sum函数,更简洁。 引用里的Python例子用了Java,但用户现在可能需要Python代码。比如,可以遍历字符串,每个字符检查是否是大写或小写,然后分别计数。或者利用字符串方法isupper()和islower(),这样更Pythonic。 在C语言中,用户给出的引用代码已经展示了如何用循环和条件判断统计。同样的逻辑可以应用到其他语言。需要注意不同语言中字符比较的方式,比如C中直接比较ASCII值,而Python用内置方法。 可能需要考虑输入方式,比如在Python中用input()获取字符串,然后处理。要确保用户输入字符串正确读取,不会有换行符等问题。此外,处理Unicode字符可能会有不同,但用户的问题可能只针对英文字母。 需要检查是否要区分其他字符,但用户只关心大小写字母,所以其他情况可以忽略。然后,给出两种方法的示例,Python和C,或者只Python,因为用户之前的问题可能更相关。但根据引用中的多个C例子,可能用户也需要C的解答? 最后,确保代码示例正确,语法无误,比如在Python中使用正确的缩进,C中的循环结构正确。还要注意大小写判断的条件是否正确,避免遗漏边界情况,比如特殊符号或数字。</think>统计字符串中大写字母和小写字母的数量可以通过遍历字符串中的每个字符,并使用条件判断进行分类计数实现。以下是具体实现方法及代码示例: ### Python实现方案 ```python def count_letters(s): upper = 0 lower = 0 for char in s: if char.isupper(): upper += 1 elif char.islower(): lower += 1 return upper, lower # 用户输入 input_str = input("请输入字符串:") uppercase, lowercase = count_letters(input_str) print(f"大写字母数量:{uppercase}\n小写字母数量:{lowercase}") ``` 该方法通过字符串方法$char.isupper()$和$char.islower()$进行判断,时间复杂度为$O(n)$[^1]。 ### C语言实现方案 ```c #include <stdio.h> #include <ctype.h> void count_letters(char *str, int *upper, int *lower) { *upper = *lower = 0; for (int i = 0; str[i]; i++) { if (isupper(str[i])) (*upper)++; else if (islower(str[i])) (*lower)++; } } int main() { char str[1024]; int upper, lower; printf("请输入字符串:\n"); fgets(str, sizeof(str), stdin); count_letters(str, &upper, &lower); printf("大写字母:%d\n小写字母:%d\n", upper, lower); return 0; } ``` 使用$ctype.h$库函数$isupper()$和$islower()$进行字符类型判断,注意$fgets()$会保留换行符需要特殊处理[^2][^3]。 ### 核心实现逻辑 1. **遍历字符串**:逐个访问每个字符 2. **类型判断**: - 大写字母范围:$A \leq char \leq Z$(ASCII值65-90) - 小写字母范围:$a \leq char \leq z$(ASCII值97-122) 3. **计数存储**:使用独立计数器分别累加
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值