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

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

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

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

Q&A

解決済

3回答

12217閲覧

Java:2つの数値と四則演算に対応する値を入力し、それぞれ計算する

退会済みユーザー

退会済みユーザー

総合スコア0

Java

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

0グッド

1クリップ

投稿2018/04/17 16:25

前提・実現したいこと

Javaについての質問です。
とあるJavaの問題でもうひとつ困っています。下記が問題文となります。

問題文

2つの数値と四則演算(0:+ 1:- 2:* 3:/)に対応する値(0〜3)を入力し、それぞれ計算を行う。各演算子ごとにメソッドを作成し、計算処理を行い、画面に出力すること。

制作途中のソースコード

Java

1import java.io.*; 2 3public class Ensyu6_J{ 4 public static void main(String[] args) throws IOException{ 5 BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 6 7 String str = br.readLine(); 8 String str2 = br.readLine(); 9 String str3 = br.readLine(); 10 11 int intVal = Integer.parseInt(str); 12 int intVal2 = Integer.parseInt(str2); 13 int res = Integer.parseInt(str3); 14 15 enzan(intVal,intVal2); 16 } 17 18public static void enzan(int num1, int num2){ 19 System.out.println(num1 + num2); 20 System.out.println(num1 * num2); 21 System.out.println(num1 / num2); 22 if(num1 > num2){ 23 System.out.println(num1 - num2); 24 } else { 25 System.out.println(num2 - num1); 26 } 27 } 28} 29 30 31 32

実行結果とやりたいこと

<実行画面>
10
20
3
30
200
0
10

2つの入力した数値(例:10,20)を選択した四則演算の数字で計算したいのですが、現状2つの入力した数値に対しての四則演算全ての計算結果が実行されてしまっています。
これを選んだ四則演算の数値と対応させ、その結果のみ…一つの計算結果の解答のみ表示できるようにしたいのですが、その部分をどうして良いのか分かりません。
"各演算子ごとにメソッドを作成し、計算処理を行い"の部分も恥ずかしながらどう表現して良いのか分かりません。
switch文かif else文を使用するのでは…と考えましたが、メソッドを利用しながらswitch文や if else文をどうプログラミングとして書けば良いのか、そもそもその考え方であっているのか、どうしても分からず困っています。
こちらもお助けいただけると大変助かります。よろしくお願いいたします。

補足情報(FW/ツールのバージョンなど)

Java
java version "1.8.0_161"

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

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

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

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

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

guest

回答3

0

ベストアンサー

こんにちは、

2つの数値と四則演算(0:+ 1:- 2:* 3:/)に対応する値(0〜3)を入力し、それぞれ計算を行う。各演算子ごとにメソッドを作成し、計算処理を行い、画面に出力すること。

下に書いたようなメソッドを作ってswitch文で分岐させればいいと思います。
戻り値がintであるメソッドでも書けますが、私は戻り値のないvoidで書きました。

Java

1 public static void add(int num1, int num2) 2 { 3 System.out.println(num1 + num2); 4 } 5 public static void substract(int num1, int num2){ 6 System.out.println(num1 - num2); 7 } 8 public static void multiply(int num1, int num2){ 9 System.out.println(num1 * num2); 10 } 11 public static void devide(int num1, int num2){ 12 System.out.println(num1 / num2 + "余り" + num1 % num2); 13 }

このほかに大切だと思ったことを書きます。

最初に、0~3を入力するのですが、0~3以外の整数が入力されたとき再入力させる必要があります。
(入力した整数を4で割った余りに変換する方法も一応あると思います。)
また、割り算を選択したとき2番目に入力した数字が0の時は再入力させる必要があります。

以下、私が書いたソースコードです。

Java

1 2import java.util.Scanner; 3 4public class Main { 5 6 public static void main(String[] args) { 7 8 Scanner sc = new Scanner(System.in); 9 int n; 10 do{ 11 System.out.println("加法 -> 0 減法 -> 1 乗法 -> 2 除法 - > 3 を入力"); 12 n = Integer.parseInt(sc.nextLine()); 13 if(n < 0 || n > 3){ 14 System.out.println("0~3の整数を入力してください。"); 15 } 16 }while(n < 0 || n > 3); 17 18 int num1, num2; 19 System.out.println("2つの数字を入力"); 20 do{ 21 num1 = Integer.parseInt(sc.nextLine()); 22 num2 = Integer.parseInt(sc.nextLine()); 23 if(n % 4 == 3 && num2 == 0){ 24 System.out.println("0で割ることはできません。再入力してください。"); 25 } 26 }while(n % 4 == 3 && num2 == 0); 27 28 switch(n){ 29 case 0: 30 add(num1,num2); 31 break; 32 case 1: 33 substract(num1,num2); 34 break; 35 case 2: 36 multiply(num1,num2); 37 break; 38 case 3: 39 devide(num1,num2); 40 break; 41 default: 42 break; 43 } 44 45 } 46 public static void add(int num1, int num2) 47 { 48 System.out.println(num1 + num2); 49 } 50 public static void substract(int num1, int num2){ 51 System.out.println(num1 - num2); 52 } 53 public static void multiply(int num1, int num2){ 54 System.out.println(num1 * num2); 55 } 56 public static void devide(int num1, int num2){ 57 System.out.println(num1 / num2 + "余り" + num1 % num2); 58 } 59}

投稿2018/04/17 22:42

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

退会済みユーザー

退会済みユーザー

2018/04/18 14:42

こんばんは、こちらも確認が遅くなりまして大変申し訳ございません。 そして回答いただきましてありがとうございます、大変助かります…! こちらの質問に初心者マークを付け忘れてしまい、Java初心者と明記できていなかったのですが大変ご丁寧に皆さんよりご回答いただけて、非常に勉強になります。 いただいた全ての回答を参考にプログラムを組み直して考えていたのですが、現状の自身のレベルで最も分かりやすいと感じたStars 1024さんにベストアンサーをお贈りいたします。 またご回答いただいた皆さんにもベストアンサーをお贈りしたい気持ちです、この場を借りて御礼申し上げます。 記述していただいたプログラムも今後の勉強に活かしていこうと思います、この度は本当にありがとうございました!
guest

0

各演算子ごとにメソッドを作成

このように書いてありますので、例えば次のようなメソッドを組む必要があります。

Java

1public static int add(int num1, int num2) { 2 return num1 + num2; 3}

これを四則演算の分だけ用意し、入力に応じて呼ぶメソッドを変えれば良いです。

投稿2018/04/17 16:36

LouiS0616

総合スコア35658

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

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

退会済みユーザー

退会済みユーザー

2018/04/17 17:30

早速のご回答いただきありがとうございます…! 四則演算分のメソッドを用意し、2つの数値を入力するブロックで四則演算ごとにメソッドを呼べば良い…というところまで理解できました。 そしてまた初歩的な質問になってしまうのですが、ー(マイナス)の値、引き算の部分はreturn文だとどう記述すれば良いのか、そして入力に応じて呼ぶメソッドを変えるという記述をどうしたら良いのか、お手数おかけしますがお教え願えませんでしょうか…?
LouiS0616

2018/04/18 02:54

> ー(マイナス)の値、引き算の部分はreturn文だとどう記述すれば良いのか 負の数が返ったらまずいんですかね? > そして入力に応じて呼ぶメソッドを変えるという記述をどうしたら良いのか if文あるいはswitch文を使って分岐すれば良いです。
guest

0

次のような感じでつくっていけばできると思います。

java

1import java.io.BufferedReader; 2import java.io.IOException; 3import java.io.InputStreamReader; 4 5public class Ensyu6_J { 6 public static void main(String[] args) throws IOException { 7 BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 8 9 String str = br.readLine(); 10 String str2 = br.readLine(); 11 String str3 = br.readLine(); 12 13 int op = Integer.parseInt(str); 14 int a = Integer.parseInt(str2); 15 int b = Integer.parseInt(str3); 16 17 enzan(op, a, b); 18 } 19 20 public static int enzan(int op, int a, int b) { 21 int ans = 0; 22 switch (op) { 23 default: 24 break; 25 case 0: 26 ans = add(a, b); 27 break; 28 case 1: 29 break; 30 case 2: 31 break; 32 } 33 return ans; 34 } 35 36 private static int add(int a, int b) { 37 return a + b; 38 } 39}

投稿2018/04/17 22:08

katoy

総合スコア22324

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問