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++ ){