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

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

ただいまの
回答率

90.35%

  • Java

    14384questions

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

クラス分けをする書き換えができない

解決済

回答 2

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 189

sky.user.

score 9

お世話になっております。
教科書にあったプログラム(クラス1つ)を、それぞれクラスを2つ、3つに増やして
表示する練習をしています。(クラス2つはできました。)
やろうとはしたのですが、3つ以上のクラスの分け方をしたことがなく、3つにするやり方がDisplayクラスとReidai3クラス間の変数resultの渡し方が分からず、できません。
このような複数のクラス(3つ以上)の場合、どのようにすれば良いのでしょうか?
お力をお貸しくださると幸いです。
よろしくお願いします。

//編成:クラス1つ(大元)
class Reidai1 {

    public static void main(String args[]) {

        int num1 = 100;
        int num2 = 200;
        int result = 0;

        result = num1 + num2

        System.out.println("計算結果は" + result);
    }
}コード
//編成:クラス2つ(できたもの)
class Calculate {

    public int keisan(int num1, int num2){
        int result = num1 + num2;
        return result;

    }        
}
class Reidai2 {

    public static void main(String args[]) {

        int num1 = 100;
        int num2 = 200;

        int result = 0;

        Calculate cal = new Calculate();
        result = cal.keisan(num1,num2);
        System.out.println("計算結果は" + result);
    }
}
//編成:クラス3つ(質問箇所)
class Calculate{
    public int keisan(int num1,int num2){
        int    result = num1 + num2;
        return result;
    }
}

class Display{
    public void hyouji(int result){
        System.out.println("計算結果は" + result);
    }
}

public class Reidai3{
    public static void main(String args[]) {
        int input1 = 100;
        int input2 = 200;
        int result = 0;

        Calculate cal = new Calculate();
        result = cal.keisan(num1,num2);
        Display dis = new Display();
        dis.hyouji();
    }
}

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

Reidai3.java:21: シンボルを見つけられません。
シンボル: 変数 num1
場所    : Reidai3 の クラス
result = cal.keisan(num1,num2);
^
Reidai3.java:21: シンボルを見つけられません。
シンボル: 変数 num2
場所    : Reidai3 の クラス
result = cal.keisan(num1,num2);
^
Reidai3.java:23: hyouji(int) (Display 内) を () に適用できません
dis.hyouji();
^
エラー 3 個

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

Java
コマンドプロンプト、テキストエディタ(Windows)

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

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

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

    クリップを取り消します

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

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

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

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

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

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

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

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

    質問の評価を下げる

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

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

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

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

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

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

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

    詳細な説明はこちら

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

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

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

回答 2

+1

Reidai3.java:21: シンボルを見つけられません。
シンボル: 変数 num1
場所    : Reidai3 の クラス
result = cal.keisan(num1,num2);
^
Reidai3.java:21: シンボルを見つけられません。
シンボル: 変数 num2
場所    : Reidai3 の クラス
result = cal.keisan(num1,num2);
^

「シンボルを見つけられません」というのは、「変数を使っているけど、コンパイラからその変数が見えない」という事です。

変数のスコープ(有効範囲)について、詳細はこちら。

public static void main(String args[]) {
    int input1 = 100;
    int input2 = 200;
    int result = 0;

    Calculate cal = new Calculate();
    result = cal.keisan(num1,num2);

↑ここでは、num1、num2を宣言していないのに使おうとしているため「変数が見えない」と判定されたのです。

Reidai3.java:23: hyouji(int) (Display 内) を () に適用できません
dis.hyouji();
^

同様に、メソッドについてもjavaでは「宣言したもの」しか認識できません。

class Display{
    public void hyouji(int result){

宣言しているのは引数にintをとるhyoujiメソッドなので、

Display dis = new Display();
dis.hyouji();

↑引数無しでhyoujiメソッドを呼び出そうとするとコンパイルエラーになるのです。

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2018/05/16 11:11

    ご回答ありがとうございます。
    変数の扱い方にまだ慣れていないようです。。。
    もう一度見直します!ありがとうございました。

    キャンセル

checkベストアンサー

0

やり方を理解されていないというより単なる書き間違いのように見えます

class Calculate{
    public int keisan(int num1,int num2){
        int    result = num1 + num2;
        return result;
    }
}

class Display{
    public void hyouji(int result){
        System.out.println("計算結果は" + result);
    }
}

public class Reidai3{
    public static void main(String args[]) {
        int input1 = 100;
        int input2 = 200;
        int result = 0;

        Calculate cal = new Calculate();

        // result = cal.keisan(num1,num2); ← 例題3ではnum1,2ではなくinput1,2
        result = cal.keisan(input1,input2);

        Display dis = new Display();

        // dis.hyouji(); ← 引数が必要
        dis.hyouji(result);
    }
}

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2018/05/16 10:43

    大変失礼いたしました...!書き換え時に書き間違えたようです。。。
    引数をそこで渡すのですね!迅速にご回答いただき、ありがとうございました。

    キャンセル

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

  • Java

    14384questions

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