我在这里粘贴了我的代码。在代码下方,我描述了我正在尝试做的事情
import java.util.*;
import java.io.*;
//given a string, gives letters counts etc
public class LetterDatabase{
private String word;
private int[] charCounts;
public static final int TOTAL_LETTERS=26;
//constructor
public LetterDatabase(String word) {
this.word=word;
int[] charCounts= new int[TOTAL_LETTERS];
//this function fillup charCounts with no of occurances
//more below
fillupcharArray();
}
/*Returns a count of letters.
public int get(char letter) {
return charCounts[Character.getNumericValue(letter)-10];
}
/*Sets the count for the given letter to the given value.
public void set(char letter,int value) {
int index=Character.getNumericValue(letter-'a');
charCounts[index]=value;
}
/* converts string to Array of chars containing only alphabets
private char[] convertToArray() {
String str = word.replaceAll("[^a-zA-Z]+", "");
char[] charArr=new char[str.length()];
for (int i = 0; i < str.length(); i++) {
charArr[i] = str.charAt(i);
}
return charArr;
}
private void fillupcharArray(){
char[] charArr=convertToArray();
for(int i=0;i<charArr.length;i++) {
for(int j=0;j<26;j++) {
if (Character.toLowerCase(charArr[i])==Character.toLowerCase((char)('a'+j))) {
charCounts[j]+=1;
}
}
}
}
}
我用来测试的客户端代码如下
import java.util.*;
import java.io.*;
public class Testdatabase{
public static void main(String args[]) {
String str="my name is Dummy!!!:..,";
LetterDatabase first= new LetterInventory(str);
System.out.println(first.get('a'));
System.out.println(first.set('a'));
System.out.println(first.get('a'));
}
}
说明:我定义了一个 LetterDatabase 类,它计算给定字符串中的字母数量——仅限字母(字符类型)。我有一个 get 方法,它返回特定字母的出现和一个 set 方法,它将字母的值设置为一个设定值。
在我的构造函数中,我正在调用一个填充数组(charCounts)的函数,以便我可以轻松查找给定字符的出现。首先,我的构造函数不起作用。我的类代码编译并且我上面的客户端代码编译。当我运行客户端代码,注释掉 getter 和 setter 调用时,我收到以下错误。
Exception in thread "main" java.lang.NullPointerException
at LetterDatabase.fillupcharArray(LetterInventory.java:55)
at LetterDatabase.<init>(LetterInventory.java:17)
at Testdatabase.main(hw1test.java:7)
我无法弄清楚出了什么问题。当我单独测试 fillupcharArray 时,它似乎工作正常。我不是在这里粘贴。
其次,我get and set
在课堂上定义方法的方式不是很好。如果我不必使用就好了Character.getNumericValue
我愿意听取任何其他改进。谢谢你的时间