编辑:[求助]再次感谢 - 我想我学到了一些我应该知道的关于数组的新东西:
创建对象时[] something = new object [int]; 所有东西都指向null,需要明确指出要指向的内容。
在浏览了可能的解决方案之后,我仍然没有找到我的问题的答案:
我试图从另一个类调用一个方法,但它似乎没有初始化/实例化。我以为我做了但显然不是吗?我一直在接受NPE
主要方法(countingCards.java):
public class deck {
card[] deckCard = new card[51];
/** Rules for the deck of card.
* 1. You cannot have same value of cards with same suite.
* --- i.e) no two queens of hearts
**/
public void test() {
System.out.println( deckCard.length );
System.out.println( deckCard[1].getValue() );
}
卡类:
public class card {
private String value = "hello";
private String suite = "suiteHello";
// Method to return value
public String getValue() {
return value;
}
// Method to return suite
public String getSuite() {
return suite;
}
// Method to set value
public void setValue(String s) {
value = s;
}
// Method to set suite
public void setSuite(String s) {
suite = s;
}
// Method to test
public void testing() {
value = "test";
System.out.println( value );
}
}
甲板课:
public class deck {
card[] deckCard = new card[51];
/** Rules for the deck of card.
* 1. You cannot have same value of cards with same suite.
* --- i.e) no two queens of hearts
**/
public void test() {
System.out.println( deckCard.length );
System.out.println( deckCard[1].getValue() );
}
}
我得到的例外
Exception in thread "main" java.lang.NullPointerException
at deck.test(deck.java:11)
at countingCards.main(countingCards.java:4)
任何人都知道我的代码发生了什么?
答案 0 :(得分:5)
您尚未初始化数组的元素。在甲板课上你需要这样的东西。
int l = deckCard.length();
for (i = 0; i<l; i++) {
deckCard[i] = new Card();
}
PD:名称类应为卡,大写。
答案 1 :(得分:2)
deckCard[1].getValue()
引发NullPointerException
,因为 all deckCard
数组的51个元素都是null
,直到您明确初始化它们为止。
答案 2 :(得分:2)
您需要实际向此数组添加值,否则它将始终返回null
。尝试快速循环并添加一些随机变量,然后尝试。
您无法获取最初从未创建的内容的值。