在字符串中写入信息

时间:2012-07-03 00:57:55

标签: java file

我需要将行保存到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
        }


}

预期结果:

  1. 我需要计算String:Message
  2. 中每个字符的出现次数
  3. 将此信息存储在txt文件中
  4. 例如:

    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次

3 个答案:

答案 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)减去它,使其在025之间(而不是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
    }

}