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

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

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

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

Q&A

解決済

1回答

3847閲覧

getメソッドについて

koki.0429

総合スコア39

Java

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

0グッド

0クリップ

投稿2020/09/25 14:13

編集2020/09/25 14:28

現在、javaを学習しています。学習を進める中で、getメソッドを用いて、値を他メソッドに戻り値として返したかったのですが、値が反映されません。下記の変数rateをreportメソッド内に返したいです。ちなみに、変数win,loseなどは、メンバー変数として定義しています。

  class BaseBallTeam { private String name; private int win; private int lose; private int draw; public BaseBallTeam(String name,int win, int lose, int draw){ this.name = name; this.win = win; this.lose = lose; this.draw = draw; } public String getName(){ return this.name; } public void setName(String name){ this.name = name; } public int getWin(){ return this.win; } public void setWin(int win){ this.win = win; } public int getLose(){ return this.lose; } public void setLose(int lose){ this.lose = lose; } public int getDraw(){ return this.draw; } public void setDraw(int draw){ this.draw = draw; } public void report(){ double rate = getRate(); System.out.println(name+"の2019年の成績は"+this.win+"勝"+this.lose+"敗"+this.draw+"分、勝率は"+rate+"です。"); } public double getRate(){ double rate = win / (win + lose); return rate; } }

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

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

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

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

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

LouiS0616

2020/09/25 14:22

価が反映されないとは、具体的にどのような状況ですか?
koki.0429

2020/09/25 14:27

getメソッドのrateを、reportメソッドのrateに代入したいのですが、代入されない状況です。なので、reportメソッドのSystem.out.println()のrateの値が0.0と表示されます。
guest

回答1

0

ベストアンサー

getメソッドのrateを、reportメソッドのrateに代入したいのですが、代入されない状況です。なので、reportメソッドのSystem.out.println()のrateの値が0.0と表示されます。

いいえ。正しく代入されていますよ。

Java

public double getRate(){
double rate = win / (win + lose);
return rate;
}

Javaでは、整数 割る 整数 は、常に整数です。

例えば win が 8、lose が 2 のとき、rate = 8 / 10 は 0.8 にはなりません。
小数点以下を切り捨てた 0 が代入されます。Javaにおいてはこれが正しい計算結果です

0.8 を取得したいのであれば、
少なくとも割られる数か割る数のどちらかが浮動小数型でなければなりません。

Java

1double rate = (double)win / (win + lose);

あるいは

Java

1double rate = win / (double)(win + lose);

おまけ

個人的には次のように書くのが好みです。

Java

1double rate = 1. * win / (win + lose);

投稿2020/09/25 14:34

LouiS0616

総合スコア35660

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

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

koki.0429

2020/09/25 14:38

回答していただき、ありがとうございます!モヤモヤがやっと解けました笑 おまけの1. * とはどういう意味なのでしょうか?もし、お時間あれば教えていただきたいです。
LouiS0616

2020/09/25 14:42

1. は 1.0 と同じ意味です。 まず最初に 1. * win が計算される(掛け算と割り算は優先順位が同じなので左から結合される)ので、winが8のとき8.0が算出されます。結果的にはdoubleでキャストしているのと同じです。
koki.0429

2020/09/25 15:18

初めて知りました!返信いただいた上に、新しい知識も教えていただきありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問