2016-04-28 8 views
0

私のプログラムは、ユーザーからデータベースにURLを受け取り、このデータベースを処理し、平均を計算して表示することです。そのための私のアルゴリズムは完璧にうまく動作します。問題はURL例外の処理です。ユーザーが無効なURLを入力した場合、再試行して正しいURLを入力する必要がありますが、ユーザーがURLを再度入力すると、URLのデータは処理されず、出力に「NaN」が表示され続けます。以下は、私が問題がそこにあると信じているtry catchブロックです。できれば助けてください。Try-Catchブロックが私のように例外をハンドリングしない

//テストURL // URL salary =新しいURL( "http://cs.armstrong.edu/liang/data/Salary.txt");

System.out.println("Enter The URL to the File "); 
    Scanner UserInput = new Scanner(System.in); 


    try 
    { 

     //Ask The User to Input the URL 

     URL salary = new URL(UserInput.nextLine()); 



     Scanner Read = new Scanner(salary.openStream()); 



     while(Read.hasNextLine()) 
     { 

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



       String Firstname = Read.next(); 


       String Lastname = Read.next(); 

       String rank = Read.next(); 

       double Salary = Read.nextDouble(); 


       if(rank.matches("assistant")) 

       { 
        Faculty[i] = new AssistantProfessor(Firstname, Lastname, rank, Salary); 
        allAssistantProff[i] = new AssistantProfessor(Firstname, Lastname, rank, Salary); 
        AssistantProfessors++; 
       } 

       if(rank.matches("associate")) 

       { 
        Faculty[i] = new AssociateProfessor(Firstname, Lastname, rank ,Salary); 
        allAssociateProff[i] = new AssociateProfessor(Firstname, Lastname, rank ,Salary); 
        AssociateProfessors++; 
       } 

       if(rank.matches("full")) 
       { 

        Faculty[i] = new FullProfessor(Firstname, Lastname, rank, Salary); 
        allFullProff[i] = new FullProfessor(Firstname, Lastname, rank, Salary); 
        FullProfessors++; 
       } 

        //System.out.println(Faculty[i]); 
        //System.out.println(allAssistantProff[i]); 
        //System.out.println(allAssociateProff[i]); 
        //System.out.println(allFullProff[i]); 



     } 


     } 


    } 



    catch(MalformedURLException ex) 
    { 

     System.out.println("invalid URL" + " Try Again "); 
     URL salary = new URL(UserInput.nextLine()); 
    } 
+0

だから、例外はありますか?私はコントロールがブロックをキャッチするように到達するのですか? – tesnik03

+0

これはデバッグサービスではありません。自分でデバッガを使用してください。 – Raedwald

答えて

0

2つの有効なURLを入力して実行してみましたか?

「Scanner Read = new Scanner(salary.openStream());」を再起動する「戻る」または「戻る」は表示されません。ライン

あなたが外側ジャンプバックを持っている場合、あなたはcatchブロックで「}」の後に削除されます例外処理でのローカル変数の給与を、宣言している、これは

0
カントー問題ではないかもしれませんが、あなたを移動

try-catchを次のようにループに入れます:

System.out.println("Enter The URL to the File "); 
Scanner UserInput = new Scanner(System.in); 
Scanner Read; 
while (true) { 
    try { 
    URL salary = new URL(UserInput.nextLine()); 
    Read = new Scanner(salary.openStream()); 
    break; 
    } catch(IOException ex) { 
    System.out.println("Couldn't open URL. Try again."); 
    } 
} 
while(Read.hasNextLine()) { 
    /* Process your file as usual. */ 
} 
関連する問題