计算 java 字符串中特定出现的次数
Counting the number of specific occurrences in a java String
我试图解决一个问题,我创建了一个方法来计算某个字符串中大写字母和小写字母("A" 或 "a")出现的次数。我已经研究这个问题一个星期了,我收到的主要错误是 "char cannot be dereferenced"。任何人都可以为我指出这个 Java 问题的正确方向吗?谢谢。
class Main{
public static int countA (String s)
{
String s1 = "a";
String s2 = "A";
int count = 0;
for (int i = 0; i < s.length; i++){
String s3 = s.charAt(i);
if (s3.equals(s1) || s3.equals(s2)){
count += 1;
}
else{
System.out.print("");
}
}
}
//test case below (dont change):
public static void main(String[] args){
System.out.println(countA("aaA")); //3
System.out.println(countA("aaBBdf8k3AAadnklA")); //6
}
}
尝试更简单的解决方案
String in = "aaBBdf8k3AAadnklA";
String out = in.replace ("A", "").replace ("a", "");
int lenDiff = in.length () - out.length ();
正如@chris 在他的回答中提到的那样,可以先将字符串转换为小写,然后只进行一次检查
用于计算'a'
或'A'
出现在字符串中的次数:
public int numberOfA(String s) {
s = s.toLowerCase();
int sum = 0;
for(int i = 0; i < s.length(); i++){
if(s.charAt(i) == 'a')
sum++;
}
return sum;
}
或者只替换其他所有内容,看看你的字符串有多长:
int numberOfA = string.replaceAll("[^aA]", "").length();
the main error that I am receiving is that "char cannot be
dereferenced"
改变这个:
s.length // this syntax is incorrect
对此:
s.length() // this is how you invoke the length method on a string
另外,改变这个:
String s3 = s.charAt(i); // you cannot assign a char type to string type
对此:
String s3 = Character.toString(s.charAt(i)); // convert the char to string
以更简单的方式完成任务的另一种解决方案是使用 Stream#filter
方法。然后在比较之前将 Stream
中的每个 String
转换为小写,如果有任何字符串匹配 "a"
我们保留它,如果不匹配我们忽略它,最后我们简单地 return 计数。
public static int countA(String input)
{
return (int)Arrays.stream(input.split("")).filter(s -> s.toLowerCase().equals("a")).count();
}
求字符a和A在string中出现的次数.
int numA = string.replaceAll("[^aA]","").length();
我试图解决一个问题,我创建了一个方法来计算某个字符串中大写字母和小写字母("A" 或 "a")出现的次数。我已经研究这个问题一个星期了,我收到的主要错误是 "char cannot be dereferenced"。任何人都可以为我指出这个 Java 问题的正确方向吗?谢谢。
class Main{
public static int countA (String s)
{
String s1 = "a";
String s2 = "A";
int count = 0;
for (int i = 0; i < s.length; i++){
String s3 = s.charAt(i);
if (s3.equals(s1) || s3.equals(s2)){
count += 1;
}
else{
System.out.print("");
}
}
}
//test case below (dont change):
public static void main(String[] args){
System.out.println(countA("aaA")); //3
System.out.println(countA("aaBBdf8k3AAadnklA")); //6
}
}
尝试更简单的解决方案
String in = "aaBBdf8k3AAadnklA";
String out = in.replace ("A", "").replace ("a", "");
int lenDiff = in.length () - out.length ();
正如@chris 在他的回答中提到的那样,可以先将字符串转换为小写,然后只进行一次检查
用于计算'a'
或'A'
出现在字符串中的次数:
public int numberOfA(String s) {
s = s.toLowerCase();
int sum = 0;
for(int i = 0; i < s.length(); i++){
if(s.charAt(i) == 'a')
sum++;
}
return sum;
}
或者只替换其他所有内容,看看你的字符串有多长:
int numberOfA = string.replaceAll("[^aA]", "").length();
the main error that I am receiving is that "char cannot be dereferenced"
改变这个:
s.length // this syntax is incorrect
对此:
s.length() // this is how you invoke the length method on a string
另外,改变这个:
String s3 = s.charAt(i); // you cannot assign a char type to string type
对此:
String s3 = Character.toString(s.charAt(i)); // convert the char to string
以更简单的方式完成任务的另一种解决方案是使用 Stream#filter
方法。然后在比较之前将 Stream
中的每个 String
转换为小写,如果有任何字符串匹配 "a"
我们保留它,如果不匹配我们忽略它,最后我们简单地 return 计数。
public static int countA(String input)
{
return (int)Arrays.stream(input.split("")).filter(s -> s.toLowerCase().equals("a")).count();
}
求字符a和A在string中出现的次数.
int numA = string.replaceAll("[^aA]","").length();