我已经使用两种方法更新了我的代码而不是前一种方法。但我仍然卡住,不知道如何创建和调用将替换Character.isLetter(s.charAt(i))的方法。该方法假设接收一个char,并返回一个与countLetter()方法一起使用的int 方法是:
int [] countLetters (string s), int pos(char x), and void printResults(int[] counts)
是的,int [] countLetters确实需要返回一个数组。我只是想知道如何使用pos方法而不是character.isLetter。
这是我到目前为止所得到的:
import java.util.Scanner;
public class CharCount {
public static Scanner kbd = new Scanner(System.in);
public static void main(String[] args) {
System.out.println("Enter a string: ");
printResults(null);
}
/*
* This method counts the number of occurrences in the inputed
* string and returns the array with the count.
*/
public static int[] countletters(String s){
int[] counts = new int[26];
for(int i = 0; i < s.length(); i++){
if (Character.isLetter(s.charAt(i))){
counts[(int)s.charAt(i) - 'a']++;
}
}
return counts;
}
public static int pos(char x){
return (int)charAt();
}
private static int charAt() {
// TODO Auto-generated method stub
return 0;
}
/*
* This method prints the results of the string count
*/
public static void printResults(int[] counts){
String s = kbd.nextLine();
counts = countletters(s.toLowerCase());
System.out.println("\nLetter frequencies:");
for (int i =0; i < counts.length; i++){
if (counts[i] != 0){
System.out.println((char)('a' + i) + " - " + counts[i] );
}
}
}
}
我觉得我需要从counts[(int)s.charAt(i) - 'a']++
开始并将其移至print方法。
感谢。
答案 0 :(得分:1)
我不会为你发布代码,因为这是作业,但你的pos方法应该返回字母表中char的相对位置。因此'a'将返回0,'b'返回1,'c'返回2,...
我自己,我会更改char大写或小写,你的选择,然后从中减去一个数字(或实际上是一个char),并将其返回。
然后在for循环内的pos(...)
方法中使用countletters(...)
方法来确定要递增的数组索引。请注意,您应该放弃charAt()
方法,因为除了混淆之外没有任何其他目的。