[英]java checking frequency of letters
我正在編寫一個程序來計算頻率,單詞數和句子的單詞長度。 我已經編寫了代碼,但是在初始化arrays
出錯,但是我不確定如何使用多種方法來執行此操作。 我在x[i]
遇到錯誤。
import java.util.Scanner;
public class ScanningText {
public static int countLetters (String x) {
int totalLetter, i;
totalLetter = 0;
for (i = 0; i < x.length(); i++) {
for (int upper = 65; upper <= 90; upper++) {
if (x[i] == upper)
totalLetter += 1;
} for (int lower = 97; lower <= 122; lower++) {
if (x[i] == lower)
totalLetter+=1;
}
} return totalLetter;
}
public static int words (String x) {
int totalWord, i;
for (i = 0; i < x.length(); i++) {
if (x[i] == 32)
totalWord += 1;
} return totalWord;
}
public static int longest (String x) {
int longestWord, wordLength, i;
longestWord = 0;
wordLength = 0;
for (i = 0; i < x.length(); i++) {
for (int upper = 65; upper <= 90; upper++) {
if (x[i] == upper)
wordLength += 1;
} for (int lower = 97; lower <= 122; lower++) {
if (x[i] == lower)
wordLength += 1;
} if (x[i] == 32 || x[i + 1] == 0) {
if (wordLength > longestWord)
longestWord = wordLength;
wordLength = 0;
}
} return longestWord;
}
public static int frequency (String x) {
int letter, i;
int[] amount;
amount = new int[26];
for (i = 0; i < x.length(); i++) {
for (int upper = 65; upper <= 90; upper++) {
if (x[i] == upper) {
letter = upper;
letter = letter - 65;
for (int d = 0; d < 26; d++) {
// d is occurence of each letter
if (d == letter)
amount[d] += 1;
}
}
} for (int lower = 97; lower < 123; lower++) {
if (x[i] == lower) {
letter == lower;
letter = letter - 97;
for (int k = 0; k <= 25; k++) {
if (k == letter)
amount[k] += 1;
}
}
}
}
}
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
String text;
int[] amount;
amount = new int[26];
String list = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
System.out.println("Enter a single line of text");
text = input.nextLine();
System.out.println("Total letters: " + countLetters(text));
System.out.println("Total Words: " + words(text));
System.out.println("Longest word length is: " + longest(text));
System.out.println("Frequency is: " + frequency(text));
for ( int i = 0; i < 26; i++) {
if (amount[i] != 0)
System.out.println(list[i] + " -- " + amount[i]);
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.