我如何将其更改为私人空白?

时间:2014-03-18 16:27:15

标签: java string frequency frequency-analysis

我如何更改此进入私人空白? 它目前处于公共静态空白状态。主要问题是在私有虚空中它无法读取字符串。我对编程很陌生,所以如果这很容易,请耐心等待。

import java.util.Arrays;
import java.util.HashMap;

public class FrequencyPrint {
    public static void main(String[] args) {
        String s = "ccrrcdcffcghijk";
        HashMap<Character, Integer> hashMap = new HashMap<Character, Integer>();
        for (int i = 0; i < s.length(); i++) {
            if (hashMap.containsKey(s.charAt(i))) {
                int value = hashMap.get(s.charAt(i));
                hashMap.put(s.charAt(i), ++value);
            } else {
                hashMap.put(s.charAt(i), 1);
            }
        }

        Character keys[] = Arrays.copyOf(hashMap.keySet().toArray(), hashMap
                .keySet().toArray().length, Character[].class);
        Integer values[] = Arrays.copyOf(hashMap.values().toArray(), hashMap
                .values().toArray().length, Integer[].class);


        for (int i = 0; i < keys.length; i++) {
            int x = FrequencyPrint.findmax(values);
            for (int j = 0; j < values[x]; j++) {
                System.out.print(keys[x]);
            }
            values[x] = 0;
        }

    }

    public static int findmax(Integer values[]) {
        int max = 0;
        for (int i = 0; i < values.length; i++) {
            if (values[i] > values[max]) {
                max = i;
            }
        }
        return max;
    }
}

2 个答案:

答案 0 :(得分:0)

import java.util.Arrays;
import java.util.HashMap;

public class FrequencyPrint {
    public static void main(String[] args) {
        FrequencyPrint fP = new FrequencyPrint();
        fP.readStrings();
    }

    private void readStrings() {
        String s = "ccrrcdcffcghijk";
        HashMap<Character, Integer> hashMap = new HashMap<Character, Integer>();
        for (int i = 0; i < s.length(); i++) {
            if (hashMap.containsKey(s.charAt(i))) {
                int value = hashMap.get(s.charAt(i));
                hashMap.put(s.charAt(i), ++value);
            } else {
                hashMap.put(s.charAt(i), 1);
            }
        }

        Character keys[] = Arrays.copyOf(hashMap.keySet().toArray(), hashMap
            .keySet().toArray().length, Character[].class);
        Integer values[] = Arrays.copyOf(hashMap.values().toArray(), hashMap
            .values().toArray().length, Integer[].class);


        for (int i = 0; i < keys.length; i++) {
            int x = this.findmax(values);
            for (int j = 0; j < values[x]; j++) {
                System.out.print(keys[x]);
            }
            values[x] = 0;
        }

    }

    private int findmax(Integer values[]) {
        int max = 0;
        for (int i = 0; i < values.length; i++) {
            if (values[i] > values[max]) {
                max = i;
            }
        }
        return max;
    }
}

答案 1 :(得分:0)

您想返回一个int,但是您传递一个Integer []作为参数。你基本上有4个选项

  
      
  1. 保持方法不变(建议..)。现在,如果您一直希望将返回类型保留为私有空,那么

  2.   
  3. 在main()中创建FrequenceyPrint的对象,使用对象的引用调用findMax(),传递一个Integer / object。   将int / Integer封装为参数。改变对象   在findMax中引用引用,你的main()将返回   数据

  4.