質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

解決済

3回答

1725閲覧

変数aとbに読み込んだ整数値が両方とも奇数か、一方のみ奇数か、両方とも偶数であるかを表示するプログラムについて。

whitehorse85921

総合スコア34

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

0クリップ

投稿2019/03/08 15:08

前提・実現したいこと

なぜ両方とも奇数か、一方のみ奇数か、両方とも偶数になるかを知りたいです。
ここに質問の内容を詳しく書いてください。
1.なぜ「a%2==0の時、c+1をcに代入」かつ「b%2==0の時、c+1をcに代入」するのでしょうか?
2.なぜ、「c==0は、両方とも奇数になり」、「c==1は一方のみ奇数になり」、「c==2は両方とも偶数になる」のでしょうか?
■■な機能を実装中に以下のエラーメッセージが発生しました。
エラーは無いです。

発生している問題・エラーメッセージ

エラーは無いです。

エラーメッセージ

該当のソースコード

int c=0;
if(a%2==0) c=c+1;
if(b%2==0) c=c+1;

if(c==0)
System.out.println("両方とも奇数です。");
else if(c==1)
System.out.println("一方のみ奇数です。");
else if(c==2)
System.out.println("両方とも偶数です。");

Java ソースコード import java.util.Scanner; class Even{ public static void main(String[]args){ Scanner stdIn=new Scanner(System.in); System.out.print("a:"); int a=stdIn.nextInt(); System.out.print("b:"); int b=stdIn.nextInt(); int c=0; if(a%2==0) c=c+1; if(b%2==0) c=c+1; if(c==0) System.out.println("両方とも奇数です。"); else if(c==1) System.out.println("一方のみ奇数です。"); else if(c==2) System.out.println("両方とも偶数です。"); } } ### 試したこと ここに問題に対して試したことを記載してください。 ### 補足情報(FW/ツールのバージョンなど) ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

c は、 偶数の個数を数えるのにつかっています。
ですから、最初に c = 0 としています。

a, b それぞれについて、 偶数なら c をカウントアップしていきます。
(x が偶数なら x % 2 (2 で割ったときの余り) は 0 という事を利用して カウントアップしていきます)

カウントアップが終わった時点で、
c == 0 なら 偶数は無かった, つまり両方とも奇数だったことになります。
c == 1 なら 一つだけ偶数があった、 つまり一方のみ奇数だったことになります。
c == 2 なら、2つ偶数があった、 つまり両方とも奇数だったことになります。

ここでは、偶数の数をかぞえましたが、奇数の数を数えるようにするとプログラムが少し簡単になります。

jara

1c = 0 2c = c + (a % 2); 3c = c + (b % 2);

c の足し算部分は

java

1c += a % 2 2c += b % 2

とも書けます。

投稿2019/03/09 07:41

katoy

総合スコア22324

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

whitehorse85921

2019/03/11 08:09

ありがとうございます。 偶数の数を数えるのも奇数の数を数えるのもとても分かりやすかったです! 特に奇数の数を数えるプログラムを教えていただき感謝です!
guest

0

ベストアンサー

グーを作ります。
まずはaの値を見て、偶数なら指を一本立ち上げます。
次いでbの値を見て、偶数なら指を一本立ち上げます。

ここで言う『立った指の本数』を表すのがcの値です。
cを見れば、双方が奇数/一方が奇数/双方が偶数 であると判定できると思いませんか。

コードの書き方について

teratailには、コードを見やすく表示する機能があります。
質問編集画面を開き、コードを選択した状態で<code>ボタンを押して下さい。
Java

投稿2019/03/08 15:21

編集2019/03/08 15:29
LouiS0616

総合スコア35660

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

whitehorse85921

2019/03/08 15:35

ありがとうございます。 2番目の質問の答えがとても分かりやすかったです!
LouiS0616

2019/03/08 15:39

『c+1をcに代入』が、例の『指を一本立ち上げる』に相当します。 cの値が実際にどのように変遷していくか観察すると良いでしょう。
whitehorse85921

2019/03/08 15:46

ありがとうございます。 1番目の質問も分かりやすくて助かりました! 具体的なイメージで教えていただき感謝です!
guest

0

a%2 はaを2で割ったときの余りを示します
つまり、aが偶数なら0、奇数なら1を返します。
ということでそのコードを読んでいきましょう。

投稿2019/03/08 15:14

y_waiwai

総合スコア87774

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

whitehorse85921

2019/03/08 15:27

ありがとうございます。 「aが偶数なら0、奇数なら1を返す」から、なぜc==0は両方とも奇数、c==1は一方のみ奇数、c==2は両方とも偶数になるのか、どうしても分かりません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問