SSブログ

Java:if文だけで閏年判定&偶数/奇数判定 [勉強]

昨日(08/06)で、職業訓練3週間が終わりました。1日の欠席、1~2時間の遅刻だけで、なんとか済みました。

演習問題というか、「~できるプログラムを書け」とかいうのが、教科書の各章毎に用意されていて各章の復習にとJava javaしました。
まずは、if文だけで入力された年(西暦)が閏年か否かの判定をするソースです。

 

以下、閏年判定ソースです。 

 

import java.io.*;

public class LeapYear {
 public static void main(String args[]) {
  BufferedReader kbd = new BufferedReader(new InputStreamReader(System.in));
  try {
   int year = Integer.parseInt(args[0]);
   //閏年判定の分岐
   if ((year % 4 == 0) && (year % 100 != 0 || year % 400 == 0)) {
     System.out.println("閏年です。");
   } else {
    System.out.println("閏年ではありません。");
   }
  } catch (NumberFormatException e) {
   System.out.println("正しい数値を入力してください。");
  }
 }
}

閏年は、4で割り切れる年だけど100で割り切れる年は閏年ではない。しかし、400で割り切れる場合は閏年。というややこしい判定基準なんですよね。
これをif文の条件式に当てはめるのに、かなり考えました。

if ((year % 4 == 0) && (year % 100 != 0 || year % 400 == 0))

%は、year(入力された年)を4で割った余りを求める演算子で、余りが0=割り切れたということで、閏年とする。&&は論理演算子?で、前の条件かつ後ろの条件が満たされている(true)かどうかを判定します。ここだと4で割り切れるけど100で割り切れない、となります。
さらに||という演算子はorみたいなもので「または」という感じですね。
最終的には「4で割り切れる かつ100で割り切れない、または400で割り切れる」という条件を表したのが上記if文です。
ここのif文の条件式に辿り着くのが大変でした。全部||にしてしまっていたり、全部&&にしてしまったり・・・・・・。)^-^;

 

で、次はif文で入力された数字(整数)が偶数か奇数かの判定をするソースです。

import java.io.*;

public class EvenOrOdd {
 public static void main(String args[]) {
  BufferedReader kbd = new BufferedReader (new InputStreamReader(System.in));
  
  //数値入力待ち
  try {
   System.out.print("数値(整数)を入力してください");
   String line = kbd.readLine();
   int n = Integer.parseInt(line);
   
   //入力値の偶数/奇数判定分岐
   if ((n % 2) == 0) {
    System.out.println("入力された値は偶数です。");
   } else {
    System.out.println("入力された値は奇数です。");
   }
  } catch (IOException e) {
   System.out.println(e);
  } catch (NumberFormatException e) {
   System.out.println("入力された数値が正しくありません。");
  }
 }
}

なんか、
   String line = kbd.readLine();
   int n = Integer.parseInt(line);
の2行は、1行にまとめることができるみたいですね。

int n = Integer.parseInt(kbd.readLine());
だったかな?

C言語でも、i=i+1がi++って表現できたみたいに、いろいろ書き方をまとめることができるんですよね。さすがに、まだ sum+=i(sum=sum+iと同じ意味)が、パッと見てすぐ理解できなかったりしますけど・・・。(^-^;

入力された文字列が回分か否かの判定とか・・・0~100の乱数を200件生成し、1)全ての値を表示、2)平均を表示、3)標準偏差を表示、4)中央値(メジアン)を表示、5)最頻値(モード)を表示せよとか・・・。
まだまだ実現できていない演習課題がありますYO。
夏休み期間中に、ちょっぴり考えてみます。

では、みなさん。よい週末を!
have a good weekend!!! (^-^)ノシ

 


nice!(1)  コメント(0)  トラックバック(0) 
共通テーマ:資格・学び

nice! 1

コメント 0

コメントを書く

お名前:[必須]
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

Facebook コメント

トラックバック 0

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。