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

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

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

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

Q&A

3回答

1712閲覧

【初心者です】メソッドの練習問題を解いているのですが何が間違っているのかがわかりません。

HiromuMasuda

総合スコア7

Java

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

0グッド

0クリップ

投稿2015/10/27 02:36

<問題>
ランダムにx+y+z, x+y-z, x-y+z, x-y-zを生成し、答えを読み込むことでそれの正誤判定をするプログラムを作成せよ。

<自分が作った回答>
// 暗算力トレーニング

import java.util.Random;
import java.util.Scanner;

class Practice7_10 {

static Scanner stdIn = new Scanner(System.in); //--- 続行の確認 ---// static boolean confirmRetry() { int cont; do { System.out.print("もう一度?<Yes…1/No…0>:"); cont = stdIn.nextInt(); } while (cont != 0 && cont != 1); return cont == 1; } static boolean isMakeQuestion(){ Random rand = new Random(); int x = rand.nextInt(900) + 100; // 3桁の数 int y = rand.nextInt(900) + 100; // 3桁の数 int z = rand.nextInt(900) + 100; // 3桁の数 int[] a = new int[3]; int w = rand.nextInt(3); boolean result; int k0, k1, k2, k3; if(w == 0){ System.out.print(x + " + " + y + " + " + z + " = "); k0 = stdIn.nextInt(); if (result = (k0 == x + y + z)){ return result; } }else if(w == 1){ System.out.print(x + " + " + y + " - " + z + " = "); k1 = stdIn.nextInt(); if (result = (k1 == x + y - z)){ return result; } }else if(w == 2){ System.out.print(x + " - " + y + " + " + z + " = "); k2 = stdIn.nextInt(); if (result = (k2 == x - y + z)){ return result; } }else if(w == 3){ System.out.print(x + " - " + y + " - " + z + " = "); k3 = stdIn.nextInt(); if (result = (k3 == x - y - z)){ return result; } } } public static void main(String[] args) { System.out.println("暗算力トレーニング!!"); do { isMakeQuestion(); } while (confirmRetry()); }

}

<質問>
どうしてもエラーが消えません。頭が混乱してしまっているので状況を紐解いて間違っている部分を解説していただけるとありがたいです。

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

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

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

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

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

swordone

2015/10/27 02:42

どこでどういうエラーが出ているのかを書いてください.
guest

回答3

0

現状,wに入る値が0-2で,3にならないです(nextIntの引数より小さい0以上のintが返される).
あとint[] aがどこでも使われてないようですが…?

コンパイラからはwがRandomによって限定されているとは解釈しないため,wが0から3以外である場合に返すべきbooleanがないと解釈し,エラーを返します.
また,各ifブロックの中のifに入れなければこれも値を返せないので,エラーになります.

ただ,このコードは冗長ですね.ループを使って短くまとめられます.

投稿2015/10/27 04:55

swordone

総合スコア20649

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

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

0

エラーの内容がわからないですが、

java

1 if(w == 0){ 2 System.out.print(x + " + " + y + " + " + z + " = "); 3 k0 = stdIn.nextInt(); 4 if (result = (k0 == x + y + z)){ 5 return result; 6 } 7 }

この書き方だと入力された値が間違えている場合にreturnされないのではないでしょうか?

投稿2015/10/27 02:43

k.tada

総合スコア1679

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

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

0

isMakeQuestionreturnがありません。
あると思うかもしれませんが、
wが0でも1でも2でも3でもない場合を考えてください。

あとエラーメッセージはちゃんと読みましょう。

投稿2015/10/27 02:42

編集2015/10/27 02:43
ozwk

総合スコア13512

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問