[英]Why am I receiving a null pointer exception?
當我稱之為calculateStringValue
方法上的主要方法中的任何字符串,它完美的罰款。 當我嘗試在printStringsWithValues
方法中調用該方法時,出現空指針異常。 這與ArrayList
的字符串有關嗎?
public static void main(String[] args){
List<String> testList = new ArrayList<>();
testList.add("apple");
testList.add("hello");
printStringsWithValues(testList);}
public static void printStringsWithValues(List<String> strings)
{
for (String string : strings) {
System.out.println(string + ", " + calculateStringValue(string));
}
}
public static int calculateStringValue(String word)
{
int value = 0;
for(int j=0; j < word.length(); j++)
{
if(letterValueMap.containsKey(word.charAt(j)))
{
value += letterValueMap.get(word.charAt(j));
}
else{
return -1;
}
}
return value;
}
通過使用letterValueMap類型的上下文推斷,我假定它是Map<Character, Integer>
,因此我嘗試創建這種類型的映射並分配一些任意值以測試您的代碼。
這是我所做的
首先聲明一個letterValueMap變量,然后使用靜態初始化塊為它提供一些值
public class NullPointerHandler {
private static Map<Character, Integer> letterValueMap;
static {
letterValueMap = new HashMap<Character, Integer>();
for (int i = 'a'; i<= 'a'+25; i++) {
letterValueMap.put((char)i, i);
}
for (int i = 'A'; i<= 'A'+25; i++) {
letterValueMap.put((char)i, i);
}
letterValueMap.put(' ', 32);
}
然后,我只是簡單地使用代碼的另一部分(除了為測試目的添加了更多的單詞)!
public static void main(String[] args){
List<String> testList = new ArrayList<String>();
testList.add("apple");
testList.add("hello");
testList.add("ROME");
testList.add("rome");
testList.add("Julius Cesar");
printStringsWithValues(testList);
}
public static void printStringsWithValues(List<String> strings)
{
for (String string : strings) {
System.out.println(string + ", " + calculateStringValue(string));
}
}
public static int calculateStringValue(String word)
{
int value = 0;
for(int j=0; j < word.length(); j++)
{
if(letterValueMap.containsKey(word.charAt(j)))
{
value += letterValueMap.get(word.charAt(j));
}
else{
return -1;
}
}
return value;
}
}
測試它可以得到預期的結果, 而不會產生任何空指針異常
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.