2013-06-03 175 views
1

一旦缓冲的读取器取得测试用例值并创建一个散列表,程序就会终止。它不会进入循环。谁能解释为什么?我的Java程序意外终止

import java.io.BufferedReader; 
import java.io.InputStreamReader; 
import java.util.*; 

class anagram { 

public static void main(String[] args) throws Exception { 
BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 
int testcases = Integer.parseInt(br.readLine()); 
HashMap <String, Integer> mymap = new HashMap < String, Integer >(); 
for(int entry = 97; entry < 123; entry++){ 
    String ekey = String.valueOf((char)entry); 
    mymap.put(ekey , 0); 
} 

for(int loop1 = 1; loop1 == testcases; loop1++){ 

    String a = br.readLine(); 
    String b = br.readLine(); 

    System.out.println(a); 
    System.out.println(b); 


} 
} 
} 
+7

'LOOP1 <= testcases' –

回答

4

您的for循环错误。它只会不断循环一次,且仅当测试用例是1

试试这个:

for(int loop1 = 0; loop1 < testCases; ++loop1) 

仅供参考 - 这没有什么错开始1中去,直到<= numIterations,然而一般的编程惯例是开始值为0并且直到< numIterations,因为这是阵列的工作方式(第一个元素位于索引0,然后第10位位于索引9)。

+0

由于一吨。它的工作。非常尴尬的错误! –

+0

这种情况一直发生在我们身上,特别是如果你一整天都在盯着相同的代码。你的眼睛掩盖了实际存在的内容,你的大脑看到了你打算放在那里的东西。 ;) –

+0

是的,我知道。我通常只从0开始。非常感谢 ! –

1

使用for(int loop1 = 1; loop1 <= testcases; loop1++)

我的意思是使用 '< =' 而不是 '=='