与countletters方法一起使用的位置方法。

时间:2014-11-17 02:47:29

标签: java

我已经使用两种方法更新了我的代码而不是前一种方法。但我仍然卡住,不知道如何创建和调用将替换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方法。

感谢。

1 个答案:

答案 0 :(得分:1)

我不会为你发布代码,因为这是作业,但你的pos方法应该返回字母表中char的相对位置。因此'a'将返回0,'b'返回1,'c'返回2,...

我自己,我会更改char大写或小写,你的选择,然后从中减去一个数字(或实际上是一个char),并将其返回。

然后在for循环内的pos(...)方法中使用countletters(...)方法来确定要递增的数组索引。请注意,您应该放弃charAt()方法,因为除了混淆之外没有任何其他目的。