嗨,我是java编程新手,遇到了我最新项目的问题。我正在为保龄球做一个得分发生器并完成了代码,除非我去测试它,它说
“线程中的异常”主“java.lang.NullPointerException 在Bowling_Score.main(Bowling_Score.java:34)“
我尝试了一切来修复它,并浏览了大量的网站,但没有解决方案解决了我的问题。它可能很容易修复,但我似乎无法找到答案。有问题的那一行是第二行。
System.out.println("Frame 1, Throw 1");
Frame1Throw1 = sc.nextInt();
这是我知道如何使用带变量的扫描仪的唯一方法,所以如果有更好的方法请告诉我。它也可能是个问题,因为变量Frame1Throw1是列表中的第一个变量。
变量是正确的,我的扫描仪名称是sc
请具体说明你的答案,因为正如我所说,我是java的新手,现在只是学习基础知识。这是我的第一个大项目。
谢谢!
P.S。我使用eclipse代码我不知道是否重要
* 我得到了一个答案,这很有帮助,但它没有用。这里有一些代码的开头,可能有助于回答。
import java.util.Scanner;
public class Bowling_Score {
private static Scanner sc;
public static void main(String[] args) {
//All Variables
int Frame1Throw1 = 0;
int Frame1Throw2 = 0;
int Frame2Throw1 = 0;
int Frame2Throw2 = 0;
int Frame3Throw1 = 0;
int Frame3Throw2 = 0;
int Frame4Throw1 = 0;
//Then I have one variable for each throw of the game, and one for the final total score.
//Directions
System.out.println("To put in your score, put the number of pins you knocked down in the throw specified. If you get a strike, enter a 10 in the first throw of the frame and a 0 in the second throw of the frame. If you get a spare, Ener a 0 in the first throw of the frame and 10 in the second throw of the frame.");
//Frame 1
System.out.println("Frame 1, Throw 1");
Frame1Throw1 = sc.nextInt();
if (Frame1Throw1 == 10){
Frame1Throw1 = Frame1Throw1 + Frame2Throw1 + Frame2Throw2;
Frame1Throw2 = 0; }
答案 0 :(得分:2)
NullPointerException
表示您引用的对象尚未初始化。因此,在这种情况下,我想您之前未在代码中创建sc
。
寻找像
这样的东西Scanner sc;
并将其更改为
Scanner sc = new Scanner(System.in);
否则它可能是一个范围问题(你在某个地方创建了该方法无法看到的对象)如果第一个解决方案不起作用,你需要提供更多的代码。