2013-11-26 47 views
0

該程序將從telephones.txt文件中讀取每個電話號碼,並檢查它是否可以翻譯成一個或多個words.txt文件。該程序的輸出將包含電話號碼和他們的單詞代表。 (假設有話和電話的文件中)while循環不重複

public static void main(String[] args) throws IOException 
{ 
Scanner phones = new Scanner(new File("phones.txt")); 
Scanner words = new Scanner(new File("words.txt"));  
PrintWriter outfile = new PrintWriter(new FileWriter("outfile.txt")); 
String number = "", output = "", code = "" ; 
//Scans for next phone string 
while(phones.hasNext()) 
{ 
    number = phones.next(); 
    number = number.replace("-",""); 
    //Scans for next word string 
    while(words.hasNext()) 
    { 
     code = words.next(); 
     char[] wordChars = null; 
     wordChars = code.toCharArray(); 
     output = ""; 
      //converts word to digits 
     for(char wordChar : wordChars) 
     { 
      output = output.concat(new String(convert(wordChar))); 
     } 
     if(number.equals(output)); 
     { 
      System.out.println(number + " " + code); 
     } 
     break; 
    } 
} 
} 

這是我迄今所做的,只是我想不通的東西

if(number.equals(output)); 
     { 
      System.out.println(number + " " + code); 
     } 

對於此行我試着去看看輸出具有與數字相同的值,如果它具有相同的值,我想將其打印出來,但這是我的程序中發生的情況。

我想跟蹤我的程序,這是我認爲正在發生的事情,但它不是...

進入第一while循環,而那裏有一個手機串繼續

集數到下一個手機串

進入第二個while循環,而那裏有一個字串繼續

設置代碼到當前單詞串並轉換成一個數字值(假設轉換是正確的)

如果轉換的字符串不等於數字,我想繼續循環並搜索下一個單詞。如果是我想顯示數字+代碼並繼續搜索更多的單詞。

後,我通過搜索詞我想繼續到下一個號碼並重復該號碼詞搜索,直到第一個清單while循環沒有更多的數字

回答

1

回答你的第二個問題:

後,我通過搜索詞我想繼續到 下一個數字,並重復該號碼詞搜索,直到 第一的名單while循環沒有更多數字

答:

您應該創建一個新的實例,如果掃描儀在每次迭代中,我移動該行:

Scanner words = new Scanner(new File("words.txt")); 

進入外循環體。如果你想打破他們

while(phones.hasNext()) 
{ 
    Scanner words = new Scanner(new File("words.txt")); 
    number = phones.next(); 
    number = number.replace("-",""); 
    //Scans for next word string 
    while(words.hasNext()) 
    { 
    ... 
    } 
} 
+0

謝謝你解決了它爲什麼總是停滯的問題 – Shimy

+0

我想upvote,但因爲im新的它很難對upvote沒有15 rep:s你知道怎麼行if(number.equals(output)); System.out.println(number +「」+ code); } 是不打印它假設? – Shimy

+0

@ user3034912這是一個不同的問題,您應該將它發佈到新線程中,並解釋它正在打印的內容以及您期望的內容。 – amit

1

你的內循環總是在break結束。所以循環體只能執行一次。只需將您的break放入描述處理成功的電話號碼匹配的塊中即可。

+0

標籤的循環:http://docs.oracle.com/javase/tutorial/java/nutsandbolts/branch.html – Fabinout

+0

你知道什麼即時做錯了獲得成功的手機比賽? if(number.equals(output)); System.out.println(number +「」+ code); } 應該只打印出成功的案例不是嗎? – Shimy