如何修复null的扫描仪输入?

时间:2013-04-18 11:50:13

标签: java eclipse variables pointers null

嗨,我是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; }

1 个答案:

答案 0 :(得分:2)

NullPointerException表示您引用的对象尚未初始化。因此,在这种情况下,我想您之前未在代码中创建sc

寻找像

这样的东西
Scanner sc;

并将其更改为

Scanner sc = new Scanner(System.in);

否则它可能是一个范围问题(你在某个地方创建了该方法无法看到的对象)如果第一个解决方案不起作用,你需要提供更多的代码。