我需要将行保存到String
中前:
public function countOccurrences() {
String Message = "Hello, how are you?"
String trim = Mensaje.replaceAll(" ", "");
char[] third = trim.toCharArray();
for (int counter = 0; counter < third.length; counter++) {
char ch = third[counter];
int count = 0;
for (int i = 0; i < third.length; i++) {
if (ch == third[i]) {
count++;
}
}
boolean flag = false;
for (int j = counter - 1; j >= 0; j--) {
if (ch == third[j]) {
flag = true;
}
}
if (!flag) {
trim = "Letra:" + ch + " se repite " + count + " veces ";
// trim is a String where I need to store this information
}
}
预期结果:
例如:
newfile.txt ,其中包含以下信息:
H, 2 times
e, 2 times
l, 2 times
o, 3 times
w, 1 times
a, 1 times
r, 1 times
e, 1 times
y, 1 times
u, 1 times
//
我试过这个,有人发布了它:
trim = trim +“\ n”+ ch +“,”+ count +“veces \ n”;
结果是文件中的结果:(它更接近)
您好,Howareyou? H,2次e,2次l,2次o,3次,1次w,1次 a,1次r,1次y,1次u,1次?,1次
答案 0 :(得分:0)
问题从这里开始:
for (int i = 0; i < third.length; i++) {
if (ch == third[i]) {
count++;
}
}
我可以想到两个解决方案。正确的方法是使用字符中的Map来计算。如果你这样做,你可以用以下内容替换整个for循环(不仅仅是上面的摘录部分):
Map letters = new HashMap<Character, Integer>();
for(char c : third) {
Integer raw_count = letters.get(c);
int count = raw_count == null ? 0 : raw_count.intValue();
letters.put(c, count + 1);
}
然后遍历地图并打印出其值。评论该部分是否令人困惑。
如果您之前从未听说过地图,那么现在是了解它们的好时机。如果无法使用地图(作业......),那么我当然不会提供完整的代码示例。但你可以使用数组解决它。创建一个26元素的int数组。然后你可以做letters[c - 'a']++
之类的事情。花一点时间来消化 - 我们说数组中的第一个元素是a
s的数量,第二个是b
的数量等等。最初这些都是0。然后我们将我们正在查看的角色(c
)减去它,使其在0
和25
之间(而不是97和122),并在那里增加总数。 / p>
Si necesitas ayudaenespañol,pues dime。 NacíenHonduras。
答案 1 :(得分:0)
Guava方式:
Multiset<String> count = HashMultiset.create(Lists.charactersOf(message.replaceAll(" ", ""));
Files.write(Joiner.on("\n").join(Iterables.transform(count.entrySet(),
new Function<Entry<String>, String>() {
@Override public String apply(Entry<String> entry) {
return String.format("%s, %d times", entry.getElement(), entry.getCount());
}
}, new File("whatever.txt"), Charsets.UTF_8);
或其他什么。
答案 2 :(得分:0)
public function countOccurrences() {
String Message = "Hello, how are you?"
String trim = Mensaje.replaceAll(" ", "");
char[] third = trim.toCharArray();
for (int counter = 0; counter < third.length; counter++) {
if (ch == ',') {
continue;
}
char ch = third[counter];
int count = 0;
for (int i = 0; i < third.length; i++) {
if (ch == third[i]) {
count++;
}
}
boolean flag = false;
for (int j = counter - 1; j >= 0; j--) {
if (ch == third[j]) {
flag = true;
}
}
if (!flag) {
trim = "Letra:" + ch + " se repite " + count + " veces ";
// trim is a String where I need to store this information
}
}