如何解决java.lang.NullPointerException?
这是我为snake和ladder编写的代码。请帮助我排除异常。例外情况在第72行和第114行。我已经用注释突出显示了导致异常的行。提前感谢您的帮助如何解决java.lang.NullPointerException?,java,nullpointerexception,null,Java,Nullpointerexception,Null,这是我为snake和ladder编写的代码。请帮助我排除异常。例外情况在第72行和第114行。我已经用注释突出显示了导致异常的行。提前感谢您的帮助 package practical1; import java.io.Console; import java.util.ArrayList; import java.util.Scanner; public class snakeandladder1 { int totalpos=100; int v=0; int[] scores;
package practical1;
import java.io.Console;
import java.util.ArrayList;
import java.util.Scanner;
public class snakeandladder1 {
int totalpos=100;
int v=0;
int[] scores;
int score=0;
int l=0;
public int throwdice()
{
int i=0;
{
while(i==0)
{
i=(int)Math.random()*100;
i=i%13;
}
return i;
}
}
public int ladder(int score)
{
if(score==15)
score=30;
else if(score == 45)
score=71;
else if(score == 25)
score=62;
else if(score == 81)
score=91;
else if(score == 9)
score=39;
scores[l]=score;
return score;
}
public int snake(int score)
{
if(score == 29)
score=11;
else if(score == 81)
score=48;
else if(score == 92)
score=71;
else if(score == 30)
score=6;
else if(score == 58)
score=19;
scores[l]=score;
return score;
}
void start()
{
System.out.println("Enter the number of players:");
Scanner in=new Scanner(System.in);
int n=in.nextInt();
in.close();
l=n;
System.out.println("Enter Players names in order:");
ArrayList<String> name1=new ArrayList<String>();
for (int i=0;i<n;i++)
{
Console in1=System.console();
String name2=in1.readLine(); //---- I am getting this null pointer exception here.
name1.add(name2);
}
while(true)
{
while(l>0)
{
System.out.println("Click y to roll dice %d"+(l+1));
Console in2=System.console();
String yes=in2.readLine();
if (yes == "y")
{
v=throwdice();
}
score = scores[l]+v; ((//--- the null pointer exception after changing all user input to scanner))
if(score==totalpos)
{
System.out.println("User:"+name1.get(l)+" got "+v+".Winner!!!");
break;
}
else if(score > totalpos)
{
scores[l]=scores[l];
}
int s1;
s1=ladder(score);
if(s1==score)
{
snake(score);
}
System.out.println("Current score of"+name1.get(l)+"is:"+scores[l]);
l--;
}
if(l==0)
{
l=n;
}
}
}
public static void main(String[] args) throws Exception{
// TODO Auto-generated method stub
snakeandladder1 sal=new snakeandladder1(); ((//null pointer exception here as well after the changes))
sal.start(); //------ i am getting this null pointer exception here
}
packagepractical1;
导入java.io.Console;
导入java.util.ArrayList;
导入java.util.Scanner;
公营蛇梯1{
int totalpos=100;
int v=0;
int[]分数;
智力得分=0;
int l=0;
公共int throwdice()
{
int i=0;
{
而(i==0)
{
i=(int)Math.random()*100;
i=i%13;
}
返回i;
}
}
公共智力阶梯(智力分数)
{
如果(分数=15)
得分=30分;
否则如果(分数=45)
得分=71分;
否则如果(分数=25)
得分=62分;
否则如果(分数=81)
得分=91分;
否则如果(分数=9)
得分=39分;
分数[l]=分数;
返回分数;
}
公众智力(智力分数)
{
如果(分数=29)
得分=11分;
否则如果(分数=81)
得分=48分;
否则如果(分数=92)
得分=71分;
否则如果(分数=30)
得分=6分;
否则如果(分数=58)
得分=19分;
分数[l]=分数;
返回分数;
}
void start()
{
System.out.println(“输入玩家数量:”);
扫描仪输入=新扫描仪(系统输入);
int n=in.nextInt();
in.close();
l=n;
System.out.println(“按顺序输入玩家姓名:”);
ArrayList name 1=新的ArrayList();
对于(int i=0;i0)
{
System.out.println(“单击y滚动骰子%d”+(l+1));
consolein2=System.Console();
字符串yes=in2.readLine();
如果(是==“y”)
{
v=杂音();
}
score=scores[l]+v;((//--将所有用户输入更改为扫描仪后的空指针异常))
如果(分数==总位置)
{
System.out.println(“用户:“+name1.get(l)+”get“+v+”.Winner!!!”;
打破
}
否则如果(分数>总积分)
{
分数[l]=分数[l];
}
int s1;
s1=阶梯(分数);
如果(s1==分数)
{
蛇(分数);
}
System.out.println(“当前“+name1.get(l)+”的分数为:“+scores[l]);
l--;
}
如果(l==0)
{
l=n;
}
}
}
公共静态void main(字符串[]args)引发异常{
//TODO自动生成的方法存根
snakeandladder1 sal=new snakeandladder1();(//此处为空指针异常,更改后也是如此))
sal.start();//----我在这里得到这个空指针异常
}
}
请注意,在上述代码close()
中,方法不仅会关闭扫描仪
对象本身,还会关闭其下划线流(即键盘输入)。这发生在系统中的
和实现可读的所有其他源中
发件人:
当扫描仪关闭时,如果输入源
实现可关闭接口
我的建议是:
- 删除.close()中的
代码>
- 使用
name2=in.readLine()代码>
尝试新扫描仪(System.in)
从标准输入流读取输入。Read-返回与当前Java虚拟机关联的唯一控制台对象(如果有),否则null
。您可以共享完整的堆栈跟踪吗?为什么在中使用,在中使用?两个对象获得本质上相同的东西(从控制台输入)。。。在
中使用,并将该放在1中
搜索此站点以查找“如何读取堆栈跟踪”。只需使用您已有的扫描仪,但不要关闭它。嗨…谢谢您的帮助。我已清除这些内容并了解sacanner对象的工作原理。这是堆栈跟踪:输入玩家数量:2按顺序输入玩家名称:线程中的异常practical1.snakeandladder1.main(snakeandladder1.java:114)处的practical1.snakeandladder1.start(snakeandladder1.java:72)处的“main”java.lang.NullPointerException嗨…现在我遇到了另一个问题…其他两行也出现了同样的问题..第83行和第115行..这是堆栈跟踪:输入玩家数量:2按顺序输入玩家名称:kishan raghav单击y在线程“main”java.lang.NullPointerException中掷骰子%d3 y practical1.snakeandladder1.start处出现异常(snakeandladder1.java:85)在practical1.snakeandladder1.main(snakeandladder1.java:113)我不明白的是如何清除此异常。此异常适用于null pionter变量或对象,但我尚未将任何变量或对象分配为null。请帮助…您是否执行了我的建议?如果是,请发布更新后的代码以及更新后仍然收到的任何错误/异常。(所有这些信息都需要在您的帖子中,而不是在评论中)。
Scanner in=new Scanner(System.in);
int n=in.nextInt();
in.close();