🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
for

for文は、様々なプログラミング言語で使われている制御構造です。for文に定義している条件から外れるまで、for文内の命令文を繰り返し実行します。

Java

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

while

Whileは多くの言語で使われるコントロール構造であり、特定の条件が満たされる限り一連の命令を繰り返し実行します。

Q&A

解決済

2回答

722閲覧

処理回数を指定・代入したい。

rutus

総合スコア7

for

for文は、様々なプログラミング言語で使われている制御構造です。for文に定義している条件から外れるまで、for文内の命令文を繰り返し実行します。

Java

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

while

Whileは多くの言語で使われるコントロール構造であり、特定の条件が満たされる限り一連の命令を繰り返し実行します。

0グッド

0クリップ

投稿2019/12/12 00:47

編集2019/12/12 01:32

前提・実現したいこと

現在コードブレイカーというゲームを作成しております。 簡単に言いますと隠された3つの数字を当てるゲームです。 その中の処理でfor文を使い、入力された数字とプログラムで作られたランダムの数字を 当てていくところがあるのですが 何度目の挑戦か(入力した回数)を表示させたいです。 その中で挑戦回数を指定できるようにも指定したいと考えています。

該当のソースコード

package aaa; import java.awt.BorderLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JComboBox; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; public class GameScreen extends JFrame implements ActionListener { int answer[]= new int[3]; int count = 0, hit =0 ,blow =0; JComboBox<Integer> btn1 = new JComboBox<Integer>(); JComboBox<Integer> btn2 = new JComboBox<Integer>(); JComboBox<Integer> btn3 = new JComboBox<Integer>(); public void init() { this.setTitle("game"); //フレームの設定(タイトル・サイズ・位置 this.setTitle("game"); this.setBounds(100, 100, 400, 300); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JPanel ps = new JPanel(); JPanel pn = new JPanel(); JLabel label1 = new JLabel("?"); JLabel label2 =new JLabel("?"); JLabel label3 =new JLabel("?"); JLabel label4 = new JLabel(""); JLabel label5 = new JLabel(""); label4.setText(String.valueOf(hit)); label5.setText(String.valueOf(blow)); pn.add(label1); pn.add(label2); pn.add(label3); this.getContentPane().add(pn,BorderLayout.NORTH); ps.add(label4); ps.add(label5); this.getContentPane().add(ps,BorderLayout.SOUTH); for(int i=1; i<=6; i++) { btn1.addItem(i); btn2.addItem(i); btn3.addItem(i); } JButton btn4 = new JButton("チェック"); btn4.addActionListener(this); ps.add(btn1); ps.add(btn2); ps.add(btn3); ps.add(btn4); this.getContentPane().add(ps,BorderLayout.SOUTH); this.setVisible(true); for (int i = 0; i < answer.length; i++) { boolean sw = false; answer[i] = (int) (Math.random() * 6 + 1); do { sw = false; for (int j = i - 1; j >= 0; j--) { if (answer[i] == answer[j]) { sw= true; answer[i] = (int) (Math.random() * 6 + 1); } } } while (sw == true); } } @Override public void actionPerformed(ActionEvent e) { // TODO 自動生成されたメソッド・スタブ JButton btn = (JButton)e.getSource(); String txt = btn.getText(); if (txt.equals("チェック")) { //入力された値を取り出す Integer data1 = (Integer)btn1.getSelectedItem(); Integer data2 = (Integer)btn2.getSelectedItem(); Integer data3 = (Integer)btn3.getSelectedItem(); //答えの数字3つと、入力された数字3つを答え合わせする。 //配列設定 int datas [] = new int[3]; datas[0] = data1; datas[1] = data2; datas[2] = data3; hit = 0; blow = 0; count = 0; for (int i = 0; i < answer.length; i++) { for (int j = 0; j < answer.length; j++) { if (i == j && datas[i] == answer[j]) { hit++; } else if (datas[i] == answer[j]) { blow++; } } } } System.out.println("ヒット" + hit + " ブロー" + blow+" 回数"+count); if (hit == 3) { creen cls = new ClearScreen(); cls.init();//初期化。 } } }

試したこと

参考書などを読んで試してみましたが思うような結果になりません。
forやwhileを使ってみてもcountに入ってくるのは
繰り返した回数ではありませんでした。

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

eclipse2019_09
ここにより詳細な情報を記載してください。

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

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

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

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

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

maisumakun

2019/12/12 00:50

「繰り返す回数」とありますが、何を繰り返すのでしょうか。
y_waiwai

2019/12/12 00:53

countってのは何もしてませんが。いったい何を繰り返す回数をはかりたいんでしょう
azuapricot

2019/12/12 01:21

一部を切り取っているからか、こちらでは入力値はどこから受け取っているのかなど全くわからない状態です。 再現可能なようにコードを提示しないと的確な回答は得られません
rutus

2019/12/12 01:38

ご指摘ありがとうございます。 切り取りでわかりにくい内容となり申し訳ありません。 今一度確認して頂きたいと思います。
guest

回答2

0

ベストアンサー

count++;
を System.out.printlnの処理行の直前に入れてください。

java

1 count++; 2 System.out.println("ヒット" + hit + " ブロー" + blow+" 回数"+count);

投稿2019/12/12 01:03

編集2019/12/12 01:30
shiracamus

総合スコア5406

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

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

rutus

2019/12/12 01:35

ご回答ありがとうございます。 試しましたところ回数は1のままでした。 教えていただいたのにすいません。
shiracamus

2019/12/12 01:42 編集

count 変数はローカル変数なのですか? 関数から復帰したあとも覚えておく必要があるため、インスタンス変数にするか、クラス変数にするか、呼び出す側でカウントアップして引数で渡すかなど、変数の値を持続させる方法を考える必要がありますよ。 関数の中で 0 に初期化せずに、プログラム最初で 0に初期化しておいてください。
rutus

2019/12/12 01:46

解決致しました!!! ありがとうございます。
guest

0

何度目の挑戦か(入力した回数)を表示させたいです。

その中で挑戦回数を指定できるようにも指定したいと考えています。

まずは先に、繰り返し挑戦できるコードを書いてください(このままでは、1回の判定で終了します)。数を数えるのは、繰り返し挑戦できるようになってからです。

投稿2019/12/12 01:08

maisumakun

総合スコア145973

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

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

rutus

2019/12/12 01:37

ご回答ありがとうございます。 もしよろしければ全内容を書きましたので もう一度ご覧になって頂きたいと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問