在代码中找不到错误

用户名

我正在编写一些代码来帮助教我如何使用Java中的代码,并且我一直在使用数组。我有一个错误,我无法弄清它为什么会发生。代码:

import java.util.Scanner;
public class pubQuizArray {
private static Scanner kb = new Scanner (System.in);
static String[] questions;
static String[][] answers;
static char[] realAnswers;
static char ans;
static char yn;
static int questionNum;
static int questionNumArray;
static int numQ;
static int score = 0;

public static void writeQuiz()
{
    getQNum();
    getQ();
}

public static void getQNum()
{
    System.out.println("How many Questions?");
    numQ = kb.nextInt();
    questions = new String[numQ];
}

public static void getAns()
{
    questionNumArray = questionNum - 1;
    answers = new String[numQ][];
    System.out.println("What are the answers?");

    System.out.println("a: ");
    answers[questionNumArray][0] = kb.nextLine();

    System.out.println("b: ");
    answers[questionNumArray][1] = kb.nextLine();

    System.out.println("c: ");
    answers[questionNumArray][2] = kb.nextLine();

    System.out.println("d: ");
    answers[questionNumArray][4] = kb.nextLine();

    realAnswers = new char[numQ];
    System.out.println("What is the correct Answer?");
    realAnswers[questionNum] = kb.next().charAt(0);

}

public static void getQ()
{
    questionNum = 0;
    System.out.println("What is the First Question?");
    questions[questionNum] = kb.nextLine();
    getAns();
    questionNum ++;
    while(questionNum < numQ)
    {
        System.out.println("What is the next Question?");
        questions[questionNum] = kb.nextLine();
        getAns();
        questionNum ++;
    }
}

public static void askQ()
{
    questionNum = 0;
    while(questionNum < numQ)
    {
        System.out.println("Q1: " + questions[questionNum]);

        System.out.println("a: " + answers[questionNum][0]);
        System.out.println("b: " + answers[questionNum][1]);
        System.out.println("c: " + answers[questionNum][2]);
        System.out.println("d: " + answers[questionNum][3]);

        ans = kb.next().charAt(0);
        if(ans == realAnswers[questionNum])
        {
            System.out.println("That was correct");
            score ++;
        }
    }
}

public static void menu()

{
    System.out.println("Would you like to write a new Quiz? y/n");
    yn = kb.next().charAt(0);
    while(yn == 'y')
    {
        writeQuiz();
        System.out.println("Would you like to play the Quiz? y/n");
        yn = kb.next().charAt(0);
        while(yn == 'y')
        {
            askQ();
            System.out.println("Would you like to play again? y/n");
            yn = kb.next().charAt(0);
        }
    }
}

public static void main(String[] args)
{
    menu();
}
}

错误是这样的:

Would you like to write a new Quiz? y/n
y
How many Questions?
10
What is the First Question?
What are the answers?
a: 
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: -1
    at pubQuizArray.getAns(pubQuizArray.java:34)
    at pubQuizArray.getQ(pubQuizArray.java:56)
    at pubQuizArray.writeQuiz(pubQuizArray.java:17)

在此先感谢您提供的任何帮助。请记住,这只是一个试用程序,我仍在学习Java。

好吧,这次我有另一个问题说:

Would you like to write a new Quiz? y/n
y
How many Questions?
1
What is the First Question?
and
What are the answers?
a: a
Exception in thread "main" java.lang.NullPointerException
    at pubQuizArray.getAns(pubQuizArray.java:34)
    at pubQuizArray.getQ(pubQuizArray.java:57)
    at pubQuizArray.writeQuiz(pubQuizArray.java:17)
    at pubQuizArray.menu(pubQuizArray.java:96)
    at pubQuizArray.main(pubQuizArray.java:110)

并且我已经更新了其他先前的代码。

Sotirios Delimanolis

此时,内部 getAns()

questionNumArray = questionNum - 1;
answers = new String[numQ][];
System.out.println("What are the answers?");

System.out.println("a: ");
answers[questionNumArray][0] = kb.nextLine();

questionNumArray包含值-1该值是数组的无效索引。

它来自

public static void getQ()
{
    questionNum = 0; // set to 0
    System.out.println("What is the First Question?");
    questions[questionNum] = kb.nextLine();
    getAns(); // still 0 
    questionNum ++; // too late
    ...
}

编辑

您将要了解的NPE归结为

System.out.println("a: ");
answers[questionNumArray][0] = kb.nextLine();

您还没有初始化,answers[questionNumArray]所以是null请先执行以下操作

answers[questionNumArray] = new String[someSize]; // someSize should probably be 5 looking at your code

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在此javascript代码中找不到错误

来自分类Dev

在Python代码中找不到错误

来自分类Dev

在我的代码中找不到错误

来自分类Dev

在jQuery代码中找不到错误

来自分类Dev

在此代码中找不到错误。(SIGSEGV)

来自分类Dev

在代码中找不到语法错误

来自分类Dev

超越代码公开| 暴露:Linux中找不到命令错误

来自分类Dev

找不到我的代码中的错误所在?

来自分类Dev

从atmega128 C代码中找不到错误

来自分类Dev

在我的平方和代码中找不到错误

来自分类Dev

在我的带有链表的队列的代码中找不到错误

来自分类Dev

在代码中找不到错误(Project Euler #11 (Haskell))

来自分类Dev

我找不到 mysql 代码的错误

来自分类Dev

找不到php中的错误

来自分类Dev

在Java中找不到错误

来自分类Dev

Websocket错误:WebSocket握手期间错误:在状态行中找不到响应代码

来自分类Dev

Python键错误= 0-在代码中找不到Dict错误

来自分类Dev

虽然代码在同一包中,但在Scala中找不到错误

来自分类Dev

在C ++中找不到分段错误错误

来自分类Dev

在IntelliJ中找不到Kotlin代码格式

来自分类Dev

在代码中找不到删除按钮

来自分类Dev

在此代码中找不到正确的输出

来自分类Dev

VS代码中不一致的“找不到名称'x'”打字稿错误

来自分类Dev

在以下代码中找不到错误:-在try()之前预期的unqualified-id

来自分类Dev

我无法更新Parse中的记录;错误:“找不到要更新的对象(代码:101,版本:1.2.16)”

来自分类Dev

jFlex方法(yypushStream,yypopStream ..)在用户代码中触发“找不到符号”错误

来自分类Dev

ejb应用程序的客户端代码中的“找不到符号”错误

来自分类Dev

找不到JavaFX类:这是Java FX还是我的代码中的错误?

来自分类Dev

找不到“ en_UK”语言环境代码的名称-Sylius中的错误

Related 相关文章

  1. 1

    在此javascript代码中找不到错误

  2. 2

    在Python代码中找不到错误

  3. 3

    在我的代码中找不到错误

  4. 4

    在jQuery代码中找不到错误

  5. 5

    在此代码中找不到错误。(SIGSEGV)

  6. 6

    在代码中找不到语法错误

  7. 7

    超越代码公开| 暴露:Linux中找不到命令错误

  8. 8

    找不到我的代码中的错误所在?

  9. 9

    从atmega128 C代码中找不到错误

  10. 10

    在我的平方和代码中找不到错误

  11. 11

    在我的带有链表的队列的代码中找不到错误

  12. 12

    在代码中找不到错误(Project Euler #11 (Haskell))

  13. 13

    我找不到 mysql 代码的错误

  14. 14

    找不到php中的错误

  15. 15

    在Java中找不到错误

  16. 16

    Websocket错误:WebSocket握手期间错误:在状态行中找不到响应代码

  17. 17

    Python键错误= 0-在代码中找不到Dict错误

  18. 18

    虽然代码在同一包中,但在Scala中找不到错误

  19. 19

    在C ++中找不到分段错误错误

  20. 20

    在IntelliJ中找不到Kotlin代码格式

  21. 21

    在代码中找不到删除按钮

  22. 22

    在此代码中找不到正确的输出

  23. 23

    VS代码中不一致的“找不到名称'x'”打字稿错误

  24. 24

    在以下代码中找不到错误:-在try()之前预期的unqualified-id

  25. 25

    我无法更新Parse中的记录;错误:“找不到要更新的对象(代码:101,版本:1.2.16)”

  26. 26

    jFlex方法(yypushStream,yypopStream ..)在用户代码中触发“找不到符号”错误

  27. 27

    ejb应用程序的客户端代码中的“找不到符号”错误

  28. 28

    找不到JavaFX类:这是Java FX还是我的代码中的错误?

  29. 29

    找不到“ en_UK”语言环境代码的名称-Sylius中的错误

热门标签

归档