以下の問題に取り組んでいるのですが、上手く実行することができませんでした。
この問題は自習で取り組んでいるのですが、解答がない為に解決できずにいます。
2つの問題があるのですが、どちらに関しても、コードにおける"出力範囲は整数で指定してください"と出力するべき部分において、整数以外の値(文字列や少数など)を入力した際にNumberFormatExceptionが発生してしまいます。
課題2については、例外処理の方法が間違っていることが原因なのでしょうか?
どのような理由で、"出力範囲は整数で指定してください"というメッセージが表示されないのか、また、その対処方法を教えていただきたいです。
初心者であるため、初歩的な質問で申し訳ありませんが、よろしくお願い致します。
(1)課題1 出力数の指定 以下の条件を満たすプログラムを作ってください。クラス名は FizzBuzz1、ファイル名は FizzBuzz1.java としてください。 ・出力数をコマンドラインで指定できるようにする。 ・各値は改行でなく、コンマ(,)で区切り出力する。 ・以下の 3 点について引数のチェックを行う。 引数が入力されないときは「出力範囲を指定してください」と出力する。 引数が整数でないときは「出力範囲は整数で指定してください」と出力する。 引数は整数だが 4 以下のときは「出力範囲は 5 以上の整数で指定してください」と出力。 ・パッケージの指定はしない。 ・Shift-JIS でコード化する。
例 java FizzBuzz1 7 と入力すると次のように表示する。 1,2,Fizz,4,Buzz,Fizz,7,
(2)課題2 剰余演算子不使用 課題1を改造して、剰余演算子(%)を使わないプログラムを作ってください。クラス名 は FizzBuzz2、ファイル名は FizzBuzz2.java としてください。条件は課題 1 と同じにして ください。
該当のソースコード
課題1
package unit2; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class FizzBuzz1 { public static void main(String[] args)throws IOException { BufferedReader br=new BufferedReader(new InputStreamReader(System.in)); System.out.println("出力範囲を指定してください"); String buf=br.readLine(); int bf=Integer.parseInt(buf); if(bf<=4) { System.out.println("出力範囲は5以上の整数で指定してください"); } //整数でなかったら出力(bfを2で割った余りが1でも0でもない) if(bf%2!=1&&bf%2!=0) { System.out.println("出力範囲は整数で指定してください"); } } }
課題2
package unit2; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class FizzBuzz2 { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); System.out.println("出力範囲を指定してください"); String buf = br.readLine(); int bf = Integer.parseInt(buf); if (bf <= 4) { System.out.println("出力範囲は5以上の整数で指定してください"); } } public static int num(int buf) { //整数でなかったら出力(整数でないと、NumberFormatExceptionが発生するので、それを例外処理) try { int bf=buf; } catch (NumberFormatException e) { System.out.println("出力範囲は整数で指定してください"); } return buf; } }
回答2件
あなたの回答
tips
プレビュー