java2darray程序中的无限循环

java2darray程序中的无限循环,java,loops,multidimensional-array,infinite,Java,Loops,Multidimensional Array,Infinite,当最后一个问题被回答时,程序应该结束并给出正确答案的数量。相反,程序返回到循环中的初始问题。 “阿拉巴马州的首府是什么?” package exercise09_17; 导入java.util.Scanner; 公开课练习09_17{ 静态扫描仪输入=新扫描仪(System.in).useDelimiter(“\r\n”); 公共静态void main(字符串[]args){ int correctAnswer=0; 字符串[][]网格={ {“阿拉巴马州”、“加利福尼亚州”、“特拉华州”、“佛

当最后一个问题被回答时,程序应该结束并给出正确答案的数量。相反,程序返回到循环中的初始问题。 “阿拉巴马州的首府是什么?”

package exercise09_17;
导入java.util.Scanner;
公开课练习09_17{
静态扫描仪输入=新扫描仪(System.in).useDelimiter(“\r\n”);
公共静态void main(字符串[]args){
int correctAnswer=0;
字符串[][]网格={
{“阿拉巴马州”、“加利福尼亚州”、“特拉华州”、“佛罗里达州”、“乔治亚州”,
“夏威夷”、“爱达荷州”、“堪萨斯州”、“卢西亚纳州”、“马里兰州”、“新墨西哥州”、“俄勒冈州”,
“宾夕法尼亚州”、“罗德岛州”、“南卡罗来纳州”、“德克萨斯州”、“犹他州”、“弗吉尼亚州”,
“西弗吉尼亚”},
{“蒙哥马利”、“萨克拉门托”、“多佛”、“塔拉哈西”、“亚特兰大”,
“檀香山”、“博伊西”、“托皮卡”、“巴吞鲁日”、“安纳波利斯”、“圣何塞”、“塞勒姆”,
“哈里斯堡”、“普罗维登斯”、“哥伦比亚”、“奥斯汀”、“盐湖城”、“里士满”,
“查尔斯顿”}};
对于(int i=0;i
它不是无限的。它只运行了两次:

for(int i = 0; i< grid.length; i++){
for(int i=0;i

这里不需要这个
i
变量,因此也不需要整个外循环,因为您在第一次遍历时使用了两个子数组
grid[0]
grid[1]

尝试删除与循环无关的

public class exercise09_17 {

    static Scanner input = new Scanner(System.in).useDelimiter("\r\n"); 
    public static void main(String[] args) {
        int correctAnswer = 0;
        String [][] grid = {
                {"Alabama", "California", "Delaware", "Florida", "Georgia",
                "Hawaii", "Idaho", "Kansas", "Lousiana", "Maryland", "New Mexico", "Oregon",
                "Pennsylvania", "Rhode Island", "South Carolina", "Texas", "Utah", "Virgina",
                "West Virginia"},
                {"Montgomery", "Sacramento", "Dover", "Tallahassee", "Atlanta",
                "Honolulu", "Boise", "Topeka", "Baton Rouge", "Annapolis", "San Jose", "Salem",
                "Harrisburg", "Providence", "Columbia", "Austin", "Salt Lake City", "Richmond",
                "Charleston"}};



        for(int k = 0; k < grid[0].length; k++ ){
            System.out.println("What is the capital of " + grid[0][k] + "?");
            String capital = input.next();
            String answer = grid[1][k];


            if(capital.equalsIgnoreCase(answer)){
                correctAnswer ++;   
                System.out.println("Your answer is correct");
            } else
                System.out.println("The correct answer should be " + answer);
        }

        System.out.println("The correct count is " + correctAnswer);
    }
}
public class exercise09\u 17{
静态扫描仪输入=新扫描仪(System.in).useDelimiter(“\r\n”);
公共静态void main(字符串[]args){
int correctAnswer=0;
字符串[][]网格={
{“阿拉巴马州”、“加利福尼亚州”、“特拉华州”、“佛罗里达州”、“乔治亚州”,
“夏威夷”、“爱达荷州”、“堪萨斯州”、“卢西亚纳州”、“马里兰州”、“新墨西哥州”、“俄勒冈州”,
“宾夕法尼亚州”、“罗德岛州”、“南卡罗来纳州”、“德克萨斯州”、“犹他州”、“弗吉尼亚州”,
“西弗吉尼亚”},
{“蒙哥马利”、“萨克拉门托”、“多佛”、“塔拉哈西”、“亚特兰大”,
“檀香山”、“博伊西”、“托皮卡”、“巴吞鲁日”、“安纳波利斯”、“圣何塞”、“塞勒姆”,
“哈里斯堡”、“普罗维登斯”、“哥伦比亚”、“奥斯汀”、“盐湖城”、“里士满”,
“查尔斯顿”}};
对于(int k=0;k
更改

System.out.println("What is the capital of " + grid[0][k] + "?");


由于您使用的是
grid[0][k]
在经过所有k次迭代后,它将在同一
i=0
上再次进行k次迭代,直到
i您没有无限循环,但您将重复该过程,重复次数与网格长度相同。基本上,您不需要外部for循环。请删除该循环

for(int i = 0; i < grid.length; i++)
for(int i=0;i
而不是

for(int k = 0; k < grid[i].length; k++ ){
for(int k=0;k
改为

for(int k = 0; k < grid[0].length; k++ ){
for(int k=0;k
这不是无限的。由于循环嵌套,它只是在重复自身。打印计数的语句在循环内。您的代码段不会编译,因为没有
i
变量,for循环应该有
k
for(int k = 0; k < grid[i].length; k++ ){
for(int k = 0; k < grid[0].length; k++ ){