자바. 그 ASCII 코드 동등한로 문자열을 변환 :부호 주파수, 최고 주파수, 부호 수
public class Loop {
public static void main (String[] args) {
BralecPodatkov bp = new BralecPodatkov(); // allows me to write string
System.out.println("Type string: ");
String niz = bp.beriNiz(); // reads my string
int[] frequencies = new int [128]; // all 128 ASCII signs
int total = 0;
System.out.println("N of signs: " + niz.length()); // sum of all signs
for (int i = 0; i < niz.length(); i++) {
int ascii = (int) niz.charAt(i);
frequencies[ascii]++;
total += 1;
}
for (int i = 0; i < frequencies.length; i++) {
if (frequencies[i] > 0)
System.out.print(" " + (((float) frequencies[i]/total)*100) + "%");
else
System.out.print(" 0%"); // prints all sign frequencies in %
}
int max = frequencies[0];
for (int i = 0; i < niz.length(); i++) {
if (frequencies[i] > max) {
max = frequencies[i]; // print sign with highest frequency
}
}
System.out.println("\n" + "Max number: " + max);
}
}
결과 : 문자열을 읽고 인쇄 할 수
Type string:
1234 // arbitrary string that I insert
N of signs: 4
0% 0% 0% 0% 0% 0% 0% 0% 0% 0% 0% 0% 0% 0% 0% 0% 0% 0% 0% 0% 0% 0% 0% 0% 0% 0% 0% 0% 0% 0% 0% 0% 0% 0% 0% 0% 0% 0% 0% 0% 0% 0% 0% 0% 0% 0% 0% 0% 0% 25.0% 25.0% 25.0% 25.0% 0% 0% 0% 0% 0% 0% 0% 0% 0% 0% 0% 0% 0% 0% 0% 0% 0% 0% 0% 0% 0% 0% 0% 0% 0% 0% 0% 0% 0% 0% 0% 0% 0% 0% 0% 0% 0% 0% 0% 0% 0% 0% 0% 0% 0% 0% 0% 0% 0% 0% 0% 0% 0% 0% 0% 0% 0% 0% 0% 0% 0% 0% 0% 0% 0% 0% 0% 0% 0% 0% 0% 0% 0% 0% 0%
Max number: 0
코드 : (%)에 모든 징후의 합, 모든 기호의 주파수 가장 높은 빈도를 가진 사인. 질문 :
1) 각 주파수 앞에 적절한 기호를 추가하려면 어떻게합니까? (예 : 1 = 25 %, 2 = 25 % ...)
2) 최대 허용 주파수 코드가 작동하지 않으며 항상 0을 출력합니다. 무엇이 잘못 되었나요?
3) 문자열의 고유 한 기호 수를 계산하는 방법은 무엇입니까?
또한 실수 나 합병증을 발견하거나 의견이 있으면 알려 주시기 바랍니다.
1 - 링크를 읽었으며 ... 내 대답을 찾지 못했거나 대답이 너무 복잡했습니다. 당신은 정교 할 수 있습니까? – user2974951
2 - 작동하지 않는 것처럼 보이지만, 임의의 작은 숫자가 인쇄됩니다 – user2974951