问题陈述如下:给定一个字符串和用户的字符,找到字符(由用户给出)在字符串中重复的次数(也由用户给出)。
我有这段代码
public int repeticion (int s){
int return = 0;
int cont = 0;
Scanner in = new Scanner(System.in);
System.out.println("Write a string: ");
String chain = in.next();
System.out.println("Write the character: ");
String character = in.next();
if (chain.contains(character)) {
cont = cont + 1;
}
System.out.println("The character repeats itself "+cont+"times");
return return;
但是你可以看到.contains
只计算一次字符,而不是它在字符串中出现的次数。
答案 0 :(得分:4)
.contains()只表示字符串中存在一个字符,而不是多少字符。您需要迭代字符串的每个字符以检查它是否等于您要搜索的字符。
String chain = "your string";
int cont = 0;
for(int i=0; i<chain.length(); i++) {
if(chain.charAt(i) == character) {
cont++;
}
}
答案 1 :(得分:1)
您还可以反复检查字符是否在字符串中,获取该索引,然后检查该索引后的子字符串到字符串的结尾。我推荐以下内容:
int index = 0;
int count = 0;
while (chain.indexof(character, index) != -1 && index < chain.length()-1) {
index = chain.indexof(character, index) + 1;
count++;
}
答案 2 :(得分:0)
包含只会告诉您角色是否存在。要实际计算字符出现的次数,您需要迭代字符串并计算所选字符出现的次数。这种方法可行:
public countACharacter(char thecharacter, String stringtocountcharactersin) {
int count = 0;
for(int i = 0; i < stringtocountcharactersin.length(); i++) {
if(stringtocountcharactersin.charAt(i) == thecharacter) {
count++;
}
}
return count;
}
答案 3 :(得分:0)
//使用字符串方法。 public static void main(String [] args){
String ss="rajesh kumar";
Field value = null;
try {
value = String.class.getDeclaredField("value");
} catch (NoSuchFieldException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// It's private so we need to explicitly make it accessible.
value.setAccessible(true);
try {
char[] values = (char[])value.get(ss);
//String is converted to char array with out string functions
for (int i = 0; i < values.length; i++) {
int count=0;
for(int j=0;j<values.length;j++)
{
if(values[i]== values[j])
{
count++;
}
}
System.out.println("\n Count of :"+values[i] +"="+count);
}
System.out.println("Values "+values[1]);
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
答案 4 :(得分:0)
import java.io.*;
public class Duplicate {
public static void main(String[] args) throws IOException {
int distinct = 0;
int i = 0, j = 0;
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.println("Enter STRING : -");
String s = br.readLine();
try {
for (i = 0; i < s.length(); i++) {
while (s != null) {
s = s.trim();
for (j = 0; j < s.length(); j++) {
if (s.charAt(i) == s.charAt(j)) {
distinct++;
}
}
System.out.println(s.charAt(i) + "--" + distinct);
String d = String.valueOf(s.charAt(i));
s = s.replaceAll(d, " ");
distinct = 0;
}
}
} catch (Exception e) {}
}
}
答案 5 :(得分:0)
public static void chars( String a, char k)
{
String z=""+k;
int s=0;
for(int i=0;i<a.length();i++)
{
if(z.equals(a.substring(i,i+1)))
s++;
}
System.out.println(s);
}
您可以通过这种方式实现您的目标,而无需任何原因即可使用整数s,而您做错的是您使用的是.contains()方法,而不是将给定的char与每个char进行比较。字符串并使用计数器来保持字符的次数,也可以通过将char与一个空string(“”)连接起来将char转换为字符串,然后使用.equals方法(如我在代码。