【问题标题】:Simple java method getIntBetweenBounds gives NullPointerException error [duplicate]简单的java方法getIntBetweenBounds给出NullPointerException错误[重复]
【发布时间】:2017-10-30 19:12:12
【问题描述】:

我正在用一个名为DealOrNoDeal 的类为Java 游戏制作一个简单的方法。 这是一种非常简单的方法,可以在两个边界之间从用户那里获取 int 输入。但由于某种原因,它抛出了java.lang.NullPointerException

这是我的代码:

import java.util.Scanner;
import java.util.Arrays;
public class DealOrNoDeal {
    public Scanner scanner;
    public static void main(String[] args) {
        new DealOrNoDeal().run();
    }
    public void run() {
        Scanner scanner = new Scanner(System.in);
        int[] values = {1, 20, 100, 1000, 2000, 5000};

        System.out.println("Please select  the suitcase that you would like to keep (1-6): ");
        int keuze = getIntBetweenBounds(1, 6);
    }
    private int getIntBetweenBounds(int lowerBound, int upperBound) {
        int result = scanner.nextInt();
        System.out.println("Please select  the suitcase that you would like to keep (1-6): ");
        while (result < lowerBound || result > upperBound) {
            System.out.println("Please select  the suitcase that you would like to keep (1-6): ");
            result = scanner.nextInt();
        }
        return result; 
    }

【问题讨论】:

  • 你能发布堆栈跟踪吗?
  • 堆栈跟踪是什么意思?
  • Scanner scanner = new Scanner(System.in);改成this.scanner = new Scanner(System.in);怎么样
  • @LoekRomer 堆栈跟踪是您返回的完整异常
  • @rafathanx!现在可以了!

标签: java arrays int bounds


【解决方案1】:

你在这行重新声明Scanner

Scanner scanner = new Scanner(System.in);

删除Scanner,您的代码应该可以工作:

scanner = new Scanner(System.in);

空指针是因为第一个Scanner(实例变量)没有初始化。您创建了一个名为 scanner 的局部变量,它与名为 scanner 的实例变量命名相同。

【讨论】:

  • 无需发表评论。这是一个有效的答案。
猜你喜欢
  • 1970-01-01
  • 2012-01-19
  • 2017-10-16
  • 1970-01-01
  • 1970-01-01
  • 2017-03-18
  • 1970-01-01
  • 1970-01-01
  • 2020-08-02
相关资源
最近更新 更多