存储10个问题和10个答案的二维数组

时间:2014-12-15 22:13:09

标签: java if-statement for-loop methods multidimensional-array

我编写了一个程序,它使用一个存储10个问题和10个答案的二维数组。

程序提示用户处于状态,用户必须使用该状态的正确大写回答它,然后程序会告诉用户答案是否正确。最后,程序输出正确答案的数量。

我的代码在for循环中工作时我指定了这样的位置:

for(int x=0;x<a[0][0].length();++x) 

但如果我这样做,我将不得不写10 for for循环,无论如何我可以在1 for for循环中做到吗?另外,为什么我得到Exception(s)

Exception in thread "main" java.lang.ArrayIndexOutOfBoundException: 10
  (lines 13 and 21)
import java.util.Scanner;
public class HW11 
{
  static Scanner in = new Scanner(System.in);

  public static void main(String[]args)
  {
    String a[][]=new String [2][10];
    a[0][0]="NJ";
    a[1][0]="Trenton";
    question(a);
  }

  public static void question(String a[][]) 
  {
    int score=0;
    String what;
    for(int x=0;x<a[10].length;++x)
    {
      System.out.println("What is the capital of "+a[x]+"?");
      what=in.nextLine();
      if(what.equalsIgnoreCase(a[1][0])) {
        System.out.print("That is correct");
        score=score+1;
      } else {
        System.out.print("That is not correct");
      }
    }
  }
}

1 个答案:

答案 0 :(得分:0)

您的数组只有第一个位置的两个可能索引。并且只在第二个0-9。我认为你的for循环看起来像是

for(int x=0;x<a[0].length;++x) // <-- 0,9

最后,我想这个

System.out.println("What is the capital of "+a[x]+"?");
what=in.nextLine();
if(what.equalsIgnoreCase(a[1][0]))

意味着看起来像,

System.out.println("What is the capital of "+a[0][x]+"?");
what=in.nextLine();
if(what.equalsIgnoreCase(a[1][x]))