- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
所以,我在学校用 Bluej 编程,我们的目标是使用通用列表以图形方式设计一个图鉴。我在设计界面时没有任何问题,但在填写列表时,我遇到了问题。
--列表(自制,所以我提供完整的内容,但重点关注老师告诉我们需要在其中的一些内容)--
import basis.*;
public class List<ContentType>
{
private Node<ContentType> head;
private Node<ContentType> tail;
private Node<ContentType> current;
private int Listlenght;
private boolean isEmpty;
private boolean hasAccess;
public List(){
head = null;
tail = null;
current = null;
}
public int Listlenght(){
int counter= 0;
toFirst();
while(hasAccess()){
next();
counter++;
}
return counter;
}
public boolean isEmpty(){
return head== null;
}
public boolean hasAccess(){
return current!=null;
}
public void next(){
if(isEmpty())
System.out.println("Liste ist leer");
else{
if(!hasAccess())
System.out.println("Kein momentanes Current");
else{
current= current.getNachfolger();
}
}
}
public void toFirst(){
if(isEmpty())
System.out.println("Liste ist leer");
else
current=head;
}
public void toLast(){
if(isEmpty())
System.out.println("Liste ist leer");
else
current=tail;
}
public Node<ContentType> getCurrent(){
if(hasAccess)
return current;
else{
System.out.println("Kein momentanes Current");
return null;
}
}
public void setCurrent(Node<ContentType> pCurrent){
if(hasAccess){
if(pCurrent!= null)
current.setInhalt(pCurrent.getInhalt());
}
else
System.out.println("Kein momentanes Current");
}
public void append(ContentType pContent){
if(pContent != null){
Node<ContentType> N;
N =new Node<ContentType>();
N.setNachfolger(null);
N.setInhalt(pContent);
if(isEmpty){
head =N;
}
else
tail.setNachfolger(N);
tail = N;
}
}
public void insert(ContentType pContent){
if(pContent != null){
if(hasAccess()){
Node<ContentType> N;
N =new Node<ContentType>();
N.setInhalt(pContent);
N.setNachfolger(current);
getPrevious(current).setNachfolger(N);
}
else
System.out.println("Kein momentanes Current");
if(isEmpty())
append(pContent);
}
else{
System.out.println("Kein Inhalt");
}
}
public void concat(List<ContentType> pList){
if (pList != this && pList != null && !pList.isEmpty()) {
pList.toFirst();
int i;
for(i=0;i< pList.Listlenght();i++){
//append(pList.getCurrent().getInhalt());
pList.next();
}
}
}
public void remove(){
if(hasAccess ){
getPrevious(current).setNachfolger(current.getNachfolger());
next();
}
}
private Node<ContentType> getPrevious(Node<ContentType> pNode) {
if (pNode != null && pNode != head && !this.isEmpty()) {
Node<ContentType> temp = head;
while (temp != null && temp.getNachfolger() != pNode) {
temp = temp.getNachfolger();
}
return temp;
} else {
return null;
}
}
}
import basis.*;
public class Node <ContentTypeN> {
private ContentTypeN inhalt;
private Node<ContentTypeN> Nachfolger;
public Node(){
Nachfolger = null;
}
public void setInhalt(ContentTypeN ninhalt){
this.inhalt= ninhalt;
}
public void setNachfolger(Node nNachfolger){
this.Nachfolger= nNachfolger;
}
public ContentTypeN getInhalt(){
return inhalt;
}
public Node<ContentTypeN> getNachfolger(){
return Nachfolger;
}
}
-- 我的对象类 --
import basis.*;
public class Pokemon{
private int Index;
private String Name;
private String Typ;
public Pokemon(int pIndex,String pName, String pTyp){
Index = pIndex;
Name = pName;
Typ = pTyp;
}
public int Index(int X){
return X;
}
}
主类
import basis.*;
public class Anwendung
{
private Fenster Window;
private Farbe Color;
private Maus mouse;
private List<Pokemon> Pokedex;
private TextFeld TFStatus;
private TextFeld TFName;
private TextFeld TFTyp;
private ZahlenFeld ZFNummer;
private Knopf Knext;
private Knopf KtoFirst;
private Knopf ktoLast;
public Anwendung(){
WindowDesign();
gottacatchthemall();
IhaveNoIdea();
}
public void IhaveNoIdea(){
Pokedex.toFirst();
Pokedex.getCurrent().getInhalt();
}
public void WindowDesign(){
Window= new Fenster(700,700);
//Window.setzeHintergrundFarbe(Color.GRUEN);
Window.setzeTitel("Pokedex");
Pokedex = new List<Pokemon>();
mouse = new Maus();
TFZFGeneration();
KnopfGeneration();
}
public void KnopfGeneration(){
Knext = new Knopf();
Knext.setzePosition(550, 300);
Knext.setzeText("next");
KtoFirst = new Knopf();
KtoFirst.setzePosition(550, 350);
KtoFirst.setzeText("toFirst");
ktoLast = new Knopf();
ktoLast.setzePosition(550, 400);
ktoLast.setzeText("toLast");
}
public void TFZFGeneration(){
TFStatus = new TextFeld();
TFStatus.setzeGroesse(120,20);
TFStatus.setzePosition(0,0);
TFStatus.setzeEditierbar(false);
TFStatus.setzeText("Methode");
TFName = new TextFeld();
TFName.setzeGroesse(120,20);
TFName.setzePosition(400,300);
TFName.setzeEditierbar(false);
TFName.setzeText("PokeName");
TFTyp = new TextFeld();
TFTyp.setzeGroesse(120,20);
TFTyp.setzePosition(400,350);
TFTyp.setzeEditierbar(false);
TFTyp.setzeText("PokeTyp");
}
public void gottacatchthemall(){
TFStatus.setzeText("gottacatchthemall");
Pokemon P;
P = new Pokemon(1,"Bisasam","Pflanze");
Pokedex.append(P);
P = new Pokemon(2,"Bisaknosp","Pflanze");
Pokedex.append(P);
P = new Pokemon(3,"Bisaflor","Pflanze");
Pokedex.append(P);
P = new Pokemon(4,"Glumanda","Pflanze");
Pokedex.append(P);
P = new Pokemon(5,"Glutexo","Feuer");
Pokedex.append(P);
P = new Pokemon(6,"Glurak","Feuer");
Pokedex.append(P);
P = new Pokemon(7,"Schiggy","Wasser");
Pokedex.append(P);
P = new Pokemon(8,"Schillok","Wasser");
Pokedex.append(P);
P = new Pokemon(9,"Turtok","Wasser");
Pokedex.append(P);
}
}
现在的问题是:每当我启动“Anwendung”类(class)时,都会发生错误。它说:
java.lang.NullPointerException
at List.append(List.java:100)
at Anwendung.gottacatchthemall(Anwendung.java:88)
at Anwendung.<init>(Anwendung.java:25)
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490)
at bluej.runtime.ExecServer$3.lambda$run$1(ExecServer.java:834)
at bluej.runtime.ExecServer.runOnTargetThread(ExecServer.java:930)
at bluej.runtime.ExecServer$3.run(ExecServer.java:832)
这条线显然有问题
}
else
tail.setNachfolger(N);
看起来尾部是未定义的,即使它在下面几行被定义,并且这一行不是 Activity 的,因为当列表为空时,有一个 if 条件阻止 else 条件消失。该列表一开始是空的,我检查过。当我删除此代码时,列表似乎根本没有被填充,因为方法 goFirst 根本不起作用。
The Interface有什么建议么?我有点卡住了,我的老师也无法向我解释,所以如果我有点不具体,我很抱歉。
最佳答案
你说“尾部似乎未定义,尽管它在下面几行被定义了” - 你这是什么意思?在 Java 中,您必须首先分配值 - “上面几行”。
if(isEmpty){
head =N;
}
else
tail.setNachfolger(N); // Use brackets
tail = N;
在上面的代码中,您似乎试图在初始化 tail
之前调用 tail.setNachfolger(N)
,因此 tail 为 null,因此出现 NullPointerException。
此外,请始终使用括号(靠近“else”),因为现在尚不清楚您的意图。
很难理解你的代码,但我认为应该是:
else {
tail = N;
tail.setNachfolger(N);
}
关于填充通用列表时出现 java.lang.NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60040955/
我的应用程序从一个有 5 个选项卡的选项卡栏 Controller 开始。一开始,第一个出现了它的名字,但其他四个没有名字,直到我点击它们。然后根据用户使用的语言显示名称。如何在选项卡栏出现之前设置选
我有嵌套数组 json 对象(第 1 层、第 2 层和第 3 层)。我的问题是数据表没有出现。任何相关的 CDN 均已导入。该表仅显示部分。我引用了很多网站,但都没有解决我的问题。 之前我使用标准表来
我正在尝试设置要显示的 Parse PFLoginViewController。这是我的一个 View Controller 的类。 import UIKit import Parse import
我遇到了这个问题,我绘制的对象没有出现在 GUI 中。我知道它正在被处理,因为数据被推送到日志文件。但是,图形没有出现。 这是我的一些代码: public static void main(Strin
我有一个树状图,其中包含出现这样的词...... TreeMap occurrence = new TreeMap (); 字符串 = 单词 整数 = 出现次数。 我如何获得最大出现次数 - 整数,
因此,我提示用户输入变量。如果变量小于 0 且大于 10。如果用户输入 10,我想要求用户再次输入数字。我问时间的时候输入4,它说你输入错误。但在第二次尝试时效果很好。例如:如果我输入 25,它会打印
我已经用 css overflow 属性做了一个例子。在这个例子中我遇到了一个溢出滚动的问题。滚动条出现了,但没有工作意味着每当将光标移动到滚动条时,在这个滚动条不活动的时间。我对此一无所知,所以请帮
我现在正在做一个元素。当您单击一个元素时,会出现以下信息,我想知道如何在您单击下一个元素而不重新单击同一元素时使其消失....例如,我的元素中有披萨,我想单击肉披萨看到浇头然后点击奶酪披萨看到浇头和肉
我有一个路由器模块,它将主题与正则表达式进行比较,并将出现的事件与一致的键掩码链接起来。 (它是一个简单的 url 路由过滤,如 symfony http://symfony.com/doc/curr
这个问题在这里已经有了答案: 9年前关闭。 Possible Duplicate: mysql_fetch_array() expects parameter 1 to be resource, bo
我在底部有一个带有工具栏的 View ,我正在使用 NavigationLink 导航到该 View 。但是当 View 出现时,工具栏显示得有点太低了。大约半秒钟后,它突然跳到位。它只会在应用程序启
我试图在我的应用程序上为背景音乐添加一个 AVAudioPlayer,我正在主屏幕上启动播放器,尝试在应用程序打开时开始播放但出现意外行为... 它播放并立即不断创建新玩家并播放这些玩家,因此同时播放
这是获取一个数字,获取其阶乘并将其加倍,但是由于基本情况,如果您输入 0,它会给出 2 作为答案,因此为了绕过它,我使用了 if 语句,但收到错误输入“if”时解析错误。如果你们能提供帮助,我真的很感
暂停期间抛出异常 android.os.DeadObjectException 在 android.os.BinderProxy.transactNative( native 方法) 在 androi
我已经为猜词游戏编写了一些代码。它从用户输入中读取字符并在单词中搜索该字符;根据字符是否在单词中,程序返回并控制一些变量。 代码如下: import java.util.Random; import
我是自动化领域的新手。这是我的简单 TestNG 登录代码,当我以 TestNG 身份运行该代码时,它会出现 java.lang.NullPointerException,双击它会突出显示我导航到 U
我是c#程序员,我习惯了c#的封装语法和其他东西。但是现在,由于某些原因,我应该用java写一些东西,我现在正在练习java一天!我要创建一个为我自己创建一个虚拟项目,以便让自己更熟悉 Java 的
我正在使用 Intellij,我的源类是 main.com.coding,我的资源文件是 main.com.testing。我将 spring.xml 文件放入资源文件中。 我的测试类位于 test.
我想要我的tests folder separate到我的应用程序代码。我的项目结构是这样的 myproject/ myproject/ myproject.py moduleon
这个问题已经有答案了: What is a NullPointerException, and how do I fix it? (12 个回答) 已关闭 6 年前。 因此,我尝试比较 2 个值,一个
我是一名优秀的程序员,十分优秀!