2013-06-03 240 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++)

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