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

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

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

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

Q&A

解決済

5回答

11864閲覧

Java xがyで割り切れる時にgood、割り切れない時にbadと表示させるメソッド

kenkenPore

総合スコア9

Java

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

0グッド

0クリップ

投稿2017/06/22 04:44

###前提・実現したいこと
xとyの変数を引数とし,xをyで割った割り切れたときにGood,割り切れなかったときは Bad と表示する関数(メソッド)を作り,変数a=5とb=2を入力したとき,c=4とd=1を入力したときの結果を出力させなさい、という問題について、割り算をする動作と、整数を判定し、実際にgoodなどの文字を表示させる動作を一つのメソッドにまとめるか、別々に書くか、またそのためのコードがわかりません。
つたない知識しか持っていなくて伝わりにくい質問文で申し訳ありません。

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

static float GoB(float c, float d) { ^ kadai2C.java:16: エラー: シンボルを見つけられません return num;

###該当のソースコード

class kadai2C { public static void main(String[] args) { float a = 5.0f; float b = 2.0f; float c = 4.0f; float d = 1.0f; float x = GoB(a,b); float y = GoB(c,d); } static float GoB(float a, float b) { float num; num = a%b; if(a%b == 0){ System.out.println("Good!"); }else{ System.out.println("Bad!"); } return; } static float GoB(float c, float d) { float num; num = c%d; if(c%d == 0){ System.out.println("Good!"); }else{ System.out.println("Bad!"); } return; } }

###試したこと
引数を入力し、割った時のあまりに着目してコードを書いてみたものの、戻り値などが理解できておらずエラーが絶えません・・・

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

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

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

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

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

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

swordone

2017/06/22 06:58

解決したあとでなんですが、5と2の場合の結果は、5÷2=2.5で「割り切れる」のか、5÷2=2あまり1で「割り切れない」のか、何方ですか?
guest

回答5

0

もうちょっと基礎からやったほうが良いのではないでしょうか?

変数の型やメソッドとは何かというようなJava初心者向けのサイトはいくらでもあります。
そもそもなぜfloatを使っているのか、staticとは何か、戻り値とは何か、とか色々調べた方が良いです。

「エラー: シンボルを見つけられません」で検索するだけで原因を教えてくれるサイトはたくさんあります。
もうちょっと基本をおさえてみてください。

投稿2017/06/22 04:54

s.t.

総合スコア2021

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

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

0

ベストアンサー

一つのメソッドにまとめるか、別々に書くか

問題は、
xとyの変数を引数とし,xをyで割った割り切れたときにGood,割り切れなかったときは Bad と表示する関数(メソッド)を作り
なので、与えられた引数で判定してGoodまたはBadを表示するメソッドをひとつ作れば良いと思います。
あとはそのメソッドを引数を変えて2回呼び出すだけです。

こんな感じでしょうか。

Java

1 public static void main(String[] args) throws Exception { 2 int a = 5; 3 int b = 2; 4 int c = 4; 5 int d = 1; 6 GoB(a,b); 7 GoB(c,d); 8 } 9 10 static void GoB(int a, int b) { 11 if(a % b == 0){ 12 System.out.println("Good!"); 13 }else{ 14 System.out.println("Bad!"); 15 } 16 }

提示されたコードではfloatを使っていましたが、問題の内容から必要なさそうだったのでintに変えています。
あとメソッドGoBは戻り値の必要がないので、voidに変更してあります。

投稿2017/06/22 04:53

ttyp03

総合スコア16996

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

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

ttyp03

2017/06/22 05:19

なぜマイナス評価?理由を知りたい。
kenkenPore

2017/06/22 05:37

一番早く、かつ分かりやすかったのでベストアンサーとさせていただきました! 申し訳ありませんが、マイナス評価は私ではないので分かりません。
ttyp03

2017/06/22 05:48

マイナス評価の理由はわからず仕舞いですが、選んでいただけたので報われましたw
guest

0

エラーを消すだけでしたら static float GoB(float c, float d) { の float を void にして下さい。また同じシグネチャの関数が2つあるのでどちらか間違っている側を消すか違う名前にして下さい。

修正するとすれば、以下の様になります。
まず 割り切れるか の話をしているので float でなく int を使って下さい。計算で誤差が出て等号や剰余計算が期待した通りに動作しないかもしれません。
また戻り値が無いのであれば float でなく void を使って下さい。

class kadai2C { static void GoB(int a, int b) { if (a % b == 0) { System.out.println("Good!"); }else{ System.out.println("Bad!"); } } public static void main(String[] args) { int a = 5; int b = 2; GoB(a, b); int c = 4; int d = 1; GoB(c, d); } }

投稿2017/06/22 04:57

mattn

総合スコア5030

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

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

0

public class A {

public static void main(String[] args) { float a = 5.0f; float b = 2.0f; float c = 4.0f; float d = 1.0f; GoB(a,b); //GoB(c,d); } static float GoB(float x, float y) { if(x%y == 0){ System.out.println("Good!"); }else{ System.out.println("Bad!"); } retuen 0; }

}

単純にこれでいいのではないでしょうか?
cdの結果もほしいのであればmainの//を外してください。

エラーが出ているのはおそらく、
float x = GoB(a,b);
で値を返してxに代入しようとしているのにメソッド内で何も返していないからではないでしょうか。

投稿2017/06/22 04:58

ode

総合スコア25

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

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

0

static float GoB(float a, float b) {
static float GoB(float c, float d) {

同じ名前・同じ戻り値・同じ型の引数で宣言しているメソッドが並んでますね。
この二つはコンパイラにとっては「同じメソッドが2か所で宣言されている」と解釈されてコンパイルエラーになってしまいます。

xとyの変数を引数とし,xをyで割った割り切れたときにGood,割り切れなかったときは Bad と表示する関数(メソッド)を作り

static float GoB(float x, float y) {

というのを作れ、ということでは?

変数a=5とb=2を入力したとき,c=4とd=1を入力したときの結果を

float a = 5, b = 2, c = 4, d = 1; GoB(a, b); GoB(c, d);

としろ、ということでは?

投稿2017/06/22 04:53

編集2017/06/22 04:55
tkturbo

総合スコア5572

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問