Javaに関する様々な情報をご紹介します。

Javaに関する様々な情報をご紹介します。
評価

0

JAVA 戻り値


public class main{
    public static void main(String[]args){
    
        int num1 = Integer.parseInt( args[0] 
);
        String ope = ( args[1] );
        int num2 = Integer.parseInt( args[2] 
);
        
        Calc calc=new Calc();
        calc.init(num1);
        
        switch(ope){
            case"+":
                calc.add(num2);
                double 
total=calc.getTotal();
                
System.out.println(num1+ope+num2+"="+total);
                break;
            case"-":
                calc.sub(num2);
                
total=calc.getTotal();
                
System.out.println(num1+ope+num2+"="+total);
                break;
            case"*":
                calc.multi(num2);
                
total=calc.getTotal();
                
System.out.println(num1+ope+num2+"="+total);
                break;
            case"/":
                calc.div(num2);
                
total=calc.getTotal();
                
System.out.println(num1+ope+num2+"="+total);
                break;
            case"%":
                calc.mod(num2);
                
total=calc.getTotal();
                
System.out.println(num1+ope+num2+"="+total);
                break;
            case"^":
                calc.pow(num2);
                
total=calc.getTotal();
                
System.out.println(num1+ope+num2+"="+total);
                break;
            default:
                
System.out.println("エラーです");
        }
    }
}

上記のクラスと

下記のクラスがあります
public class Calc{
    
    public Calc{
        init(0);
    }
    
    privat double total;
    
    public void init(value){
        total=value;
    }
    
    public void add(double value){
        total=total+value;
    }
    
    public void multi(double value){
        total=total*value;
    }
    
    public void mod(double value){
        total=total%value;
    }
    
    public void sub(double value){
        total=total-value;
    }
    
    public void div(double value){
        total=total/value;
    }
    
    public double getTotal(){
        return total;
    }
    
    public void pow(double value){
        for(int i=0; i<value-1; i++){
        total=total*value
        }
    }
}

これに 11+4と入力したとします
処理式の流れとして
メインクラスのcalc.init(num1)によってinitの引数に1
1が入り11をtotalに渡し4をCalcクラスのaddメソッド
の引数valueに渡しtotal=total+valueがtotal=11+4になる
と思うのですが左辺?のtotalにも11が入るのか?

それとgetTotalでtotal(合計値)を返しているのだと思う
のですがどこに返しているのでしょうか?

また、例えばaddメソッドにretrun total;と付け加えれ
ばgetTotalメソッドも不要ですか?(他のメソッドにも
retrunを付けた場合の話です)

長くなりましたが
完結にいいますと

?処理の流れについて

?11+4と入力した時total=total+valueがtotal=11+4にな
ると思うのですが左辺?のtotalにも11が入るのか?

?addメソッドやほかのメソッドにretrunを入れれば
getTotalメソッドを省略できるか?

?getTotalはどこに戻り値を返しているのか?

以上になります。
長文、駄文ですがお願いします。

2

回答

7772

閲覧

2件の回答

評価

0

>al+valueがtotal=11+4になる
>と思うのですが左辺?のtotalにも11が入るのか?
Javaに限らず、こういう言語の場合、基本的には左辺に「新
しい」、右辺に「古い」と付けることができる。

>のですがどこに返しているのでしょうか?
そのメソッドを「使っている」側に返す。

>ばgetTotalメソッドも不要ですか?(他のメソッドにも
不要と言えば不要だが、前回の計算結果をもう一度欲しい場
合はどうする?
今回のクラスとは別のクラスで、結果だけが欲しい場合。

今回の単純なクラスなら、add(0)で同じ値が返ることは分か
り切っている。
しかし、世の中にある全てのクラスで同じことができる訳が
ないのは理解できるだろう。
それを考えさせるために、このサンプルクラスにgetTotal()が
存在すると思っていい。

評価

0

回答ありがとうございます

>Javaに限らず、こういう言語の場合、基本的には左辺に
>「新しい」、右辺に「古い」と付けることができる。

つまりのところ、入っているということですか?

不要と言えば不要だが、前回の計算結果をもう一度欲しい

合はどうする?
今回のクラスとは別のクラスで、結果だけが欲しい場合。

>今回の単純なクラスなら、add(0)で同じ値が返ることは
>分かり切っている。
>しかし、世の中にある全てのクラスで同じことができる
>訳がないのは理解できるだろう。
>それを考えさせるために、このサンプルクラスに
>getTotal()が
>存在すると思っていい。

なるほど。
大変勉強になりました
ありがとうございます!

質問から6ヶ月以上経過しているので、回答を書き込むことはできません。