我编写了一个程序,它使用一个存储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");
}
}
}
}
答案 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]))