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

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

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

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

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

Q&A

解決済

3回答

7585閲覧

【JAVA】switch文を使って0~9までの値だけ出力させたいです

zawazawa

総合スコア20

Java

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

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

0グッド

0クリップ

投稿2016/07/17 21:40

編集2016/07/17 22:00

JAVA

1package java6; 2 3public class J_6_2 { 4 public static void main(String args[]) { 5 6 int number = 0; 7 8 switch (number % 2) { 9 case 0: 10 System.out.println(number + "は偶数です"); 11 break; 12 13 case 1: 14 System.out.println(number + "は奇数です"); 15 break; 16 17 default: 18 System.out.println(number + "は0です"); 19 break; 20 } 21 } 22} 23

閲覧ありがとうございます。
ど素人の私が
Eclipseを使い、JAVAのプログラミングを行いました。

条件はswitch文を使い

numberが0の時に0が出力され

numberが1,3,5,7,9の時は奇数が出力され

numberが2,4,6,8の時は偶数が出力され

numberが0,1,2,3,4,5,6,7,8,9以外の数字の時(マイナスの値を含む)は
不正な入力と判断するプログラムを書くことです。

問題点

numberに0を入れても偶数となってしまいます。

numberに0~9以外の値を入れても出力されてしまいます。

そもそも0~9以外の数値を不正な値と認識させる文がわかりません。
自分なりに調べてfor文で範囲をしていするのか?と思い

JAVA

1for (int number = 0; number <= 9;)

という文章を追加しましたが、エラーが出てしまいます。
上級者の方から見たらfor文使って何しようとしたの?
と思われるかもしれませんが
知識不足で解決できません。

条件を満たすコードが分かる方が居ましたら
回答をお願いいたします。

よろしくお願いいたします。

追記

JAVA

1package java6; 2 3public class J_6aa { 4 public static void main(String args[]) { 5 6 int number = 0; 7 8 switch (number) { 9 10 case 0: 11 System.out.println(number + "は0です"); 12 break; 13 14 case 1: 15 case 3: 16 case 5: 17 case 7: 18 case 9: 19 System.out.println(number + "は奇数です"); 20 break; 21 22 case 2: 23 case 4: 24 case 6: 25 case 8: 26 System.out.println(number + "は偶数です"); 27 break; 28 29 default: 30 System.out.println(number + "は不正な入力です"); 31 break; 32 33 } 34 } 35} 36

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

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

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

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

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

guest

回答3

0

java

1 public static void main(String args[]) { 2 3 int number = -11; 4 switch (number / 10) { // 一桁の数字かを判定 5 case 0: 6 switch (number % 2) { // 偶数・奇数判定 7 case 0: 8 if (number == 0) { // 0 は特殊処理 9 System.out.println(number + "は0です"); 10 } else { 11 System.out.println(number + "は偶数です"); 12 } 13 break; 14 case 1: 15 System.out.println(number + "は奇数です"); 16 break; 17 default: // マイナス値 18 System.out.println(number + "は不正な入力です"); 19 break; 20 } 21 break; 22 default: 23 System.out.println(number + "は不正な入力です"); 24 break; 25 } 26 }

なるべく switch を使う、 case の数をなるべくすくなくするという方針でかいてみました。
-1, 0 , 1, 2, 9, 10 で動作を確認してみてください、

投稿2016/07/18 21:33

katoy

総合スコア22324

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

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

0

まず、switch文ですが、caseは上から順に評価します。

Java

1switch (number % 2) { 2 case 0: 3 case 1: 4 default: 5}

上のswitch文では、次の順に評価することになります。

  1. number % 2 == 0
  2. number % 2 == 1
  3. それ以外(default)

numberが0のときは1)でtrueとなるため、「偶数」と出力されます。
なお、number % 2は0または1のどちらにしかなりませんので、
3)のdefaultに処理が移ることはありえません。

次に、numberが0のときに「0です」と出したければ、switch文の前に処理したほうが良いです。
また、numberが0~9以外のときの判断はif文を使うのが良いでしょう。

まとめますと次のようになります。

Java

1if(number < 0 || 9 < number){ 2 System.out.println("不正な数字です"); 3} else if(number == 0){ 4 System.out.println("0です"); 5} 6switch(number % 2){ 7 case 0: System.out.println("偶数です"); break; 8 case 1: System.out.println("奇数です"); break; 9}

投稿2016/07/17 22:03

編集2016/07/17 22:06
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

zawazawa

2016/07/17 22:09

回答ありがとうございます。 switch文の評価の仕方を教えていただき、ありがとうございます。 defaultには辿り着けない理由がわかりました。 if文でのコードの書き方まで教えていただきありがとうございます。 今後参考にさせていただきます。
zawazawa

2016/07/17 22:16

上記のコードを使わせていただいたところ numberに10を入れたらコンソールには 不正な数字です。 偶数です。 と出力されてしまいました・・・
退会済みユーザー

退会済みユーザー

2016/07/17 22:24

すみません。動作確認せずに記載してしまいました。 if(number < 0 || 9 < number){ System.out.println("不正な数字です"); } else if(number == 0){ System.out.println("0です"); }else{ switch(number % 2){ case 0: System.out.println("偶数です"); break; case 1: System.out.println("奇数です"); break; } }
退会済みユーザー

退会済みユーザー

2016/07/17 22:26

今回は、0~9のみが対象なので、zawazawaさんが2回めに書かれたコードのほうがすっきりして良いと思います! お疲れ様でした。
guest

0

ベストアンサー

JavaのSwitch文は単純に一致するかどうかしか確認できません。その条件でSwitch文で書くとなると、numberをそのままswitchの対象として、

  • 0 の場合 case 0:
  • 1, 3, 5, 7, 9 の場合 case 1: case 3: case 5: case 7: case 9:
  • 2, 4, 6, 8 の場合 case 2: case 4: case 6: case 8:
  • その他の場合 deault:

で分岐すればいいかと思います。偶数だから、奇数だからというのは考えない方がいいと思います。

投稿2016/07/17 21:52

raccy

総合スコア21733

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

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

zawazawa

2016/07/17 22:02

回答ありがとうございます。 switch文の特徴を教えていただきありがとうございます。 追記に新しいコードを書きましたので 見て頂きたいです。 よろしくお願いいたします。
raccy

2016/07/17 22:13

追記のコードで要件を満たすようになっていると思います。numberを色々変えて試して見てください。
zawazawa

2016/07/17 22:18

ありがとうございます。 0~9の時、それ以外の時の動作も条件通りに 出力されました。 ベストアンサーにさせていただきます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問