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

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

ただいまの
回答率

90.84%

  • Java

    12512questions

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

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

解決済

回答 3

投稿

  • 評価
  • クリップ 1
  • VIEW 132

Terra.

score 7

 前提・実現したいこと

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

 問題文

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

 制作途中のソースコード

import java.io.*;

public class Ensyu6_J{
    public static void main(String[] args) throws IOException{
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

    String str = br.readLine();
    String str2 = br.readLine();
    String str3 = br.readLine();

    int intVal = Integer.parseInt(str);
    int intVal2 = Integer.parseInt(str2);
    int res = Integer.parseInt(str3);

    enzan(intVal,intVal2);
    }

public static void enzan(int num1, int num2){
    System.out.println(num1 + num2);
    System.out.println(num1 * num2);
    System.out.println(num1 / num2);
    if(num1 > num2){
    System.out.println(num1 - num2);
    } else {
    System.out.println(num2 - num1);
    }
    }
} 

 実行結果とやりたいこと

<実行画面>
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"

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 3

checkベストアンサー

+2

こんにちは、

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

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

    public static void add(int num1, int num2)
    {   
        System.out.println(num1 + num2);
    }
    public static void substract(int num1, int num2){
        System.out.println(num1 - num2);
    }
    public static void multiply(int num1, int num2){
        System.out.println(num1 * num2);
    }
    public static void devide(int num1, int num2){
        System.out.println(num1 / num2 + "余り" + num1 % num2);
    }

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

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

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

import java.util.Scanner;

public class Main {

    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);
        int n;
        do{
            System.out.println("加法 -> 0 減法 -> 1 乗法 -> 2 除法 - > 3 を入力");
            n = Integer.parseInt(sc.nextLine());
            if(n < 0 || n > 3){
                System.out.println("0~3の整数を入力してください。");
            }
        }while(n < 0 || n > 3);

        int num1, num2;
        System.out.println("2つの数字を入力");
        do{
            num1 = Integer.parseInt(sc.nextLine());
            num2 = Integer.parseInt(sc.nextLine());
            if(n % 4 == 3 && num2 == 0){
                System.out.println("0で割ることはできません。再入力してください。");
            }
        }while(n % 4 == 3 && num2 == 0);

        switch(n){
            case 0:
                add(num1,num2);
                break;
            case 1:
                substract(num1,num2);
                break;
            case 2:
                multiply(num1,num2);
                break;
            case 3:
                devide(num1,num2);
                break;
            default:
                break;
        }

    }
    public static void add(int num1, int num2)
    {   
        System.out.println(num1 + num2);
    }
    public static void substract(int num1, int num2){
        System.out.println(num1 - num2);
    }
    public static void multiply(int num1, int num2){
        System.out.println(num1 * num2);
    }
    public static void devide(int num1, int num2){
        System.out.println(num1 / num2 + "余り" + num1 % num2);
    }
}

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/04/18 23:42

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

    キャンセル

+2

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

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

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

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/04/18 02:30

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

    キャンセル

  • 2018/04/18 11:54

    > ー(マイナス)の値、引き算の部分はreturn文だとどう記述すれば良いのか
    負の数が返ったらまずいんですかね?

    > そして入力に応じて呼ぶメソッドを変えるという記述をどうしたら良いのか
    if文あるいはswitch文を使って分岐すれば良いです。

    キャンセル

+1

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

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Ensyu6_J {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        String str = br.readLine();
        String str2 = br.readLine();
        String str3 = br.readLine();

        int op = Integer.parseInt(str);
        int a = Integer.parseInt(str2);
        int b = Integer.parseInt(str3);

        enzan(op, a, b);
    }

    public static int enzan(int op, int a, int b) {
        int ans = 0;
        switch (op) {
        default:
            break;
        case 0:
            ans = add(a, b);
            break;
        case 1:
            break;
        case 2:
            break;
        }
        return ans;
    }

    private static int add(int a, int b) {
        return a + b;
    }
}

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

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

  • ただいまの回答率 90.84%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

  • 受付中

    10進数から16進数に変換

    10進数を入力すれば16進数に変換されるというプログラムを作っているのですがいまいちうまくいきませんどこがまちがっているのでしょうか? import java.io.IOExce

  • 受付中

    社員情報のプログラム

    社員情報のプログラム (JAVA) プログラの機能 (1)社員情報の追加 入力項目としては、社員番号、氏名(性、名)、生年月日(年、月、日) (3)で読み込んだ情報を追加する仕

  • 解決済

    100になる直前の加算結果出力

    javaで開始値と終了値を入力してその間の偶数を加算していき、合計が100を超えたら「数値が100を超えたため、処理を中止します。」とメッセージを出し、かつ合計が100になる前の加

  • 解決済

    javaでデータを読み込んでソートしたいのですがうまく来ません

    コンパイルするとエラーになって 「シンボルが見つかりません」と表示されます。 他にも問題があれば教えてください import java.io.File; import

  • 受付中

    [Java]オブジェクトを作成して標準入力から該当するデータを出力させたいです。

    前提・実現したいこと Javaです。 5種類のパンについて、 人気の順位, 名前, 値段 の3つの情報を持つクラスを作り、標準入力から入力された順位のパンの情報を標準出力に

  • 解決済

    会員情報システム(Java)での作り方

    javaで会員情報システムのようなものを作りたいです。 下記の実行結果(コマンドプロンプトで実行)になるような、登録プログラムを作成したいのですが、作成方法が分かりませんので、教

同じタグがついた質問を見る

  • Java

    12512questions

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