2014-02-16 30 views
0

程序应该结束并在最后一个问题得到回答后提供正确答案的数量。相反,程序可以回到循环中的最初问题。 “什么是阿拉巴马州的首府”Java 2d数组程序中的无限循环

package exercise09_17; 
import java.util.Scanner; 

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 i = 0; i< grid.length; i++){ 

      for(int k = 0; k < grid[i].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); 
    } 
} 
+0

这是不是无限的。这只是因为嵌套的循环而重复。 – Makoto

+0

打印计数的语句位于循环内部。 –

回答

1

它不是无限的。它只是两次:

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

没有必要为这个i变量这里,因此整个外环为好,因为你在第一次就通

使用两个子阵列, grid[0]grid[1]
1

尝试去除外部for loop

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); 
    } 
} 
+0

你的代码片段不会编译,因为没有'i'变量,for循环应该有'k torquestomp

+0

这很好。谢谢 –

0

变化

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

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

你通过所有K迭代去后使用grid[0][k]因为它会回来对同一i=0另一个ķ迭代直到i<grid.length

0

你没有一个无限循环,但是,你会重复该过程的次数与网格长度一样多。基本上,你不需要外循环。取下环

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

和替代

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

变化

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