###前提・実現したいこと
このページの問題が解きたいです。
https://uva.onlinejudge.org/index.php?option=onlinejudge&page=show_problem&problem=2315
概要は、何個かの文字(アルファベットもしくは記号)に報酬金が指定されてあり、
新聞記者は、自分の記事の中に報酬の対象となる文字が1回表れる度に、その文字に対応した額が加算され、
そのようにして計算した時の合計額が報酬としてもらえる、という変わった会社が舞台となっています。
1行目の入力が試行回数(記事の数)、2行目の入力が1文字のアルファベットまたは記号と数字の組を何個入力するか、
その後、2行目で入力した行数だけ文字と数字の組を入力
その後、英文(記事)の行数を入力し、最後に英文を入力します。
サンプルの入力とその時の出力は以下の通りです。
1 7 a 3 // 記事中にaが1回表れる度に3セントもらえる W 10 // 記事中にWが1回表れる度に10セントもらえる A 100 , 10 k 7 . 3 I 13 7 ACM International Collegiate Programming Contest (abbreviated as ACM-ICPC or just ICPC) is an annual multi-tiered competition among the universities of the world. The ICPC challenges students to set ever higher standards of excellence for themselves through competition that rewards team work, problem analysis, and rapid software development. From Wikipedia.
3.74$
###発生している問題・エラーメッセージ
方針はなんとなく立っているのですが、ちょっと書いてコンパイルして実行を繰り返すうちに、
問題自体とはあまり関係ないですが、以下のような壁に突き当たり、全く進まなくなってしまいました。
今までは入力の読み込みにはScannerを使っていたのですが、
今回は行丸ごと読んだ方がよさそうだと思ったので、readLineを使ってみました。
http://www1.bbiq.jp/takeharu/java114.html ←このサイトにわかりやすく使い方が載っていたので真似してみたのですが、
これをそのまま使うと
エラー: 例外FileNotFoundExceptionは報告されません。スローするには、捕捉または宣言する必要があります
と出てきたので、catch(FileNotFoundException e)を付け足してみたところ、
Newspaper.java:49: エラー: 例外FileNotFoundExceptionはすでに捕捉されています } catch(FileNotFoundException e) { ^ Newspaper.java:8: エラー: 例外FileNotFoundExceptionは報告されません。スローする には、捕捉または宣言する必要があります FileReader file = new FileReader(args[0]); ^ エラー2個
という、「既に捕捉されています」と「補足する必要があります」という2つの相反するエラーが出てきてしまいました。
一体何がおかしいのでしょうか?
###該当のソースコード
java
1import java.io.*; 2import java.util.Scanner; 3import java.util.InputMismatchException; 4 5class Newspaper { 6 public static void main (String[] args) { 7 Scanner scan = new Scanner(System.in); 8 FileReader file = new FileReader(args[0]); 9 BufferedReader br = new BufferedReader(file); 10 11 String output[] = new String[1000]; 12 int testcase = scan.nextInt(); 13 14 try { 15 for(int i=0; i<testcase; i++) { 16 int n = scan.nextInt(); 17 String letter[] = new String[n]; 18 int value[] = new int[n]; 19 20 for(int j=0; j<n; j++) { 21 letter[j] = scan.next(); 22 value[j] = scan.nextInt(); 23 } 24 25 int line = scan.nextInt(); 26 for(int j=0; j<line; j++) { 27 String str = br.readLine(); 28 System.out.println(str); 29 30 //まだ途中です 31 32 } 33 34 testcase++; 35 } 36 37 br.close(); 38 39 for(int i=0; i<testcase; i++) { 40 System.out.println(output[i]); 41 } 42 43 } catch(InputMismatchException e) { 44 System.out.println("Input must be type int."); 45 System.exit(1); 46 } catch(IOException e) { 47 System.out.println("Exception :" + e); 48 System.exit(1); 49 } 50// エラーを受けてここを追加しました その後、上記にある矛盾のようなエラーメッセージが出てきました 51 catch(FileNotFoundException e) { 52 System.out.println("Exception :" + e); 53 System.exit(1); 54 } 55 } 56} 57
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/04/21 18:15