• 締切済み

javaプログラミング

ただいまjavaで3×3のビンゴの制作で練習しております。 ビンゴカードの数字、ビンゴのボール?の数字を1~9で制作しました。 まず、一つの配列に1~9の数字をランダムで配置し、そしてそれを3×3の二次元配列で配置し、そしてさらにもう一つの配列にビンゴボールの番号をランダムで配置し、照らし合わせていくというプログラムを作りました。 3×3の数字で、出てきたボールの数字と対応した、二次元配列にある数字を0に変更(入れ替え)というところまで、できました。そこで最後にビンゴかどうかの判定をするところで詰まってしまいまして、縦、横、ななめいづれかに0が並ぶとビンゴ達成なのですが、ビンゴの判定方法のソースコードがわかりません。for文で回してみたりif文でやってみたりしたのですがどれもダメでした。一例や、ヒントなど。回答よろしくお願いします。 色々調べてみたのですが、自分のように全部配列に入れて動かしているソースが見つからず質問させていただきました。

  • Java
  • 回答数1
  • ありがとう数1

みんなの回答

回答No.1

int[][] A = { // 適当にゼロを並べてチェックしてみて下さい。 { 0, 0, 3, }, { 1, 2, 3, }, { 0, 0, 0, }, }; boolean fi, fd; boolean f = false; for(int i = 0; i<A.length; i++ ){ fi = true; fd = true; for(int j = 0; j<A[i].length; j++ ){ fi = fi & A[i][j]==0; fd = fd & A[j][i]==0; } f = f | fi | fd; } int lng = A.length; fi = true; fd = true; for(int i = 0; i<A.length; i++ ){ fi = fi & A[i][i]==0; fd = fd & A[lng-1-i][i]==0; } f = f | fi | fd; System.out.print(f); // デバッグ用表示。

関連するQ&A

  • javaプログラミングについて

    ただいま問題で練習しているのですが、 3×3の二次元配列の中にバラバラに1~9の数字を配置しているのですが、 そのなかで特定の数字のみ、たとえば1を見つけ出しその配列の数字つまり1を0に入れ替えたいのです。色々やってみたり調べてみたりしているのですがいまいち出てこず・・・。 例や、ヒントなどいただければ幸いです。

  • javaプログラミングについて

    ただいまjavaプログラム勉強中でhit&blowを制作しております。 public static void main(String[] args) { Scanner scan = new Scanner(System.in); Random rand = new Random(); int[] answer = new int[4]; int[] input = new int[4]; int[] Number = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, }; int x = 10; for (int i = 0; i < 4; i++) { int select = (int) (Math.random() * x); answer[i] = Number[select]; Number[select] = Number[x - 1]; x--; } int count = 1; while (true) { System.out.println("4桁の異なる数値を入力"); int str_input = scan.nextInt(); // 代入 for (int i = 0; i < 4; i++) { input[i] = str_input; } // hit int hit = 0; for (int i = 0; i < 4; i++) { if (input[i] == answer[i]) { hit++; } } // blow int blow = 0; for (int i = 0; i < 4; i++) { for (int j = 0; j < 4; j++){ if (i != j && input[i] == answer[j]) { blow++; } } } if (hit == 4) { System.out.println("4hit"); System.out.println("正解まで " + count + "回"); break; } else { System.out.println("Hit:" + hit + " Blow:" + (blow - hit)); count++; } } } } 数字が4桁で作っているのですが、数字や4桁以上を入力してしまった場合の表示は後にしようとして、先にhitとblowの判定を作ろうとしているのですが、上記で実行したところhitとblowの判定がされずhit:0blow:0と表示されてしまいます。解決策を教えてください。 自分で作ってみたものの、hit blowの判定方法があっているかも自信がないです。

    • ベストアンサー
    • Java
  • 一点だけを並び替えてすべて表示したいのですが・・・

    一次元配列に0~Nまでの数字を重複しないでランダムに入れて、その配列の中から一つをランダムに選び、その数字だけを並び替えて表示したいのです。 例えば、x[N]の配列があって、x[4]だったとします。 x[0] = 3, x[1] = 2, x[2] = 0, x[3] = 1と重複しない0~N(この場合は3)までの数字をランダムに配列に入れます。ここで、表示すると3201となります。 そして、その中からランダムに一つ選びます。この場合、x[2] = 0を選んだとします。それで、0321 3021 3201 3210と、x[2]だけを移動させるものを表示したいのですが良く分かりません。 重複しない乱数や、ランダムに一つ選ぶところは分かっているので、移動させて表示させる部分を教えてください。初歩的かもしれませんがお願いします。

  • ビンゴカードの理想的な数字を教えて下さい

    1番勝てるか確率が高い盤面を教えて下さい。 真ん中に穴が空いている5×5マスのビンゴカードがあります。 その中に1から24までの数字を好きな順で当て嵌めます。 1〜6の目のあるサイコロを4個降って出た目の合計のマスを空けます。完全にランダムです。 1〜3の数字は絶対出ません。 14の数字が1番出やすいです。 勝利条件はビンゴと同じく縦横斜めのどれかに5マス連続した空きができれば勝利です。 ビンゴカードにどう数字を書けば1番勝つ確率が高くなりますか? 最終的な盤面を解説付きで教えて下さい

  • 整数型の配列をランダムに並べ替える方法

    100ます計算の問題を作る、というプログラムを作ってみようと考えています。 問題となる数列は、1から9までの数字をランダムに並べ替えた物になるはずです。 さて、この「ランダムに並べ替えた数字」というのは、どういったアルゴリズムで作成するのが最適なのでしょうか? 個人的に思いついたのは、以下のような方法です。 1.整数型の配列変数(要素が9個)を作成し、それぞれ1から9まで数字を入れておきます。 2.乱数を使って、「x番目とy番目の数字を入れ替え」という風に、何度も入れ替えを行います。 これだと非常に単純なのですが、正直言って素人の考えなので、最適なのかどうか疑問なのです。 もっと最適な方法があれば教えて頂きたいです。

  • リーチ判定

    こんにちは。 C++の勉強を始めて半年の初心者です。今、コンソールでビンゴゲームを作っていますが、リーチ判定のやり方がわからなくて、みんなさんにお助けお願いしたく、投稿しました。 2次元配列を使わずに、int getCardNum(int row, int col)という関数を使ってリーチの判定をしたいのですが、自分の考えたコードが全く動作しなくて困っています。 皆さん、よろしくお願いします。

  • ビンゴゲームについて教えて下さい

    恥ずかしながらビンゴゲームをあまり詳しく知りません。 なのに今度私が約80名ほど集まる忘年会でビンゴゲームを主催しなければいけなくなりました。 今更、人に聞くのも恥ずかしく此処で質問したいと思いました(>_<) ビンゴカードは80枚以上手元に去年の残りがあるようです。 それぞれの25マスに75までの数字がバラバラに書いてありそのマスが指で抜けるようになっています。 遊び方は・・・ まず司会者が数字を1つずつ読みあげますよね。 その時その数字が自分のカードの中にあったらその数字マスを抜くようになっています。 そして縦、横、斜めのどれかが並んだらビンゴと叫んで賞品をもらいにいくというシステムのようです。そこまでは分かるんです。 そこで質問ですが数字を読み上げる人は箱の中に数字の書いた紙切れかボールなどを入れておくようですが、その数字は1~75までの数字を全部用意しておくのですよね? そして箱の中に入れておくその数字を書いた札、あるいは数字の書いたボール等は全部で何個準備すればいいのでしょうか? 例えば参加者が80名として読み上げる数字や回数などでこれだけは間違ってはいけないという決まりがあるのでしょうか。 一度取り出した数字は箱の中には入れてはいけないのでしょうか。 老人だものですから・・・・そこのところが把握出来なくて大変拙い質問をさせていただきましたが どうぞ詳しく教えてくださいませ。

  • 数字配列の各数字を行・列全て逆順で配置したい

    下記の様な各列が半角スペースで区切られた4行5列の数字配列があります。 一桁の数字が、ランダムに並んでいます。 <図A> 5 8 0 4 7 1 2 1 9 3 3 0 2 0 4 6 9 3 5 2 各数字を、行・列全て逆順で配置すると下記になります。 <図B> 2 5 3 9 6 4 0 2 0 3 3 9 1 2 1 7 4 0 8 5 今度は例えば、図Aが数字配列が200行30列など大規模になり、 同様に各数字を行・列全て逆順で配置したいとなった場合、 どういう手順を踏めば、スピーディに配置できるでしょうか? 例えばエクセルVBAなど、 スピーディに配置できる方法を(具体的に)を教えていただきたいです。 どうぞよろしくお願いいたします。

  • じゃんけんプログラムとアルゴリズムについて質問

    以下の、過去に私が質問した、2次元配列とじゃんけんアルゴリズムの質問のURLの見た上で私の質問に答えてください。 URL:ttp://okwave.jp/qa/q7038056.html 質問: public static int janken(int n){ int[][]tb1={ {9,9,9,9}, {9,0,1,2}, {9,2,0,1}, {9,1,2,0} }; int m=rand3(); System.out.println(m+" "); return tb1[n][m]; } 上記ソースコードの2次元配列について、何故「9」という数字があるのか、又1次元目と2次元目の要素数が「4」あるのかわかりませんでした。 上記のURL先で頂いた回答を元に、私は理解に努めました。その理解が正しいか判定してください。 私の理解: 「この勝敗表をあらわす2次元配列について、それぞれのプレイヤーのジャンケンの『手』 を要素番号『1,2,3』に対応させている。要番号1,2,3を使用するためには、Javaでは要素番号は0から始まるため、「要素数」が4つ必要。だから、要素数が4ある。よって、この要素番号『0』はこのプログラムに於いては不要。 また、2次元目の要素番号『0』に関連する要素に『9』という数字がチョイスされてるが、『9』という数字のチョイスに特に意味はないが、、0、1、2以外の数字であることに意味はある。因みに、その2つの要素番号に対応する要素が勝敗の結果の番号になる。」 こういうことでしょうか?

    • ベストアンサー
    • Java
  • VB2008によるコントロール配列

    VB初心者でただ今勉強中です。VB2008です。 Form1の中にたくさん(100個くらい)の星(ビットマップデータ)をちりばめ、その星がランダムに点いたり消えたりするプログラムを作成しようとしています。 フォームにPictureBoxを配置して(星.bmp)とします。 その星を100個フォーム上にちりばめたいのですがPictureBoxを100個も置くのはムダな労力です。 それで配列を使いたいのですが、PictureBoxを1つだけフォームに配置してそれをコード上で配列として使う方法がわかりません。 いろいろ調べてみたのですが初心者にはわからない説明ばっかりで途方に暮れています。

専門家に質問してみよう