XNAで3×3の升目に入力した数字を表示させるプログラムのエラーについて

このQ&Aのポイント
  • 学校の授業でXNAを使用して、3×3の升目に入力した数字を表示させるプログラムを作成していますが、入力しても表示されません。(実行してもエラーは出ません)
  • プログラムのInitializeメソッドのtile[i, j] = -1;の-1を1に変えると、最初から1が表示された状態になるので、定義や画像指定、Drawメソッドは正しく動いていると思いますが、原因が分かりません。
  • 解決策をご存知の方がいらっしゃいましたら、教えていただけないでしょうか?
回答を見る
  • ベストアンサー

XNA

学校の授業のXNAで、3×3の升目に入力した数字を表示させるものなのですが、プログラムの例をもらったので作って見たのですが入力しても表示されません。(実行してもエラーは出ません) Initializeメソッドのtile[i, j] = -1;の-1を1に変えると最初から1が表示された状態になるので、定義や画像指定、Drawメソッドは大丈夫だと思うのですが、原因が分かりません。どなたか分かる方はいらっしゃらないでしょうか? public class Nine : Microsoft.Xna.Framework.Game { const int MaxColumn = 3; const int MaxRow = 3; const int LetterWidth = 48; const int LetterHeight = 80; const int TileWidth = 100; const int TileHeight = 100; GraphicsDeviceManager graphics; SpriteBatch spriteBatch; Texture2D tileTexture; Texture2D highlightTexture; Texture2D numbersTexture; Point currPosition; KeyboardState lastKeyboardState; int[,] tile; bool completed; public Nine() { (割愛) } protected override void Initialize() { currPosition = new Point(1, 1); lastKeyboardState = Keyboard.GetState(); tile = new int[MaxColumn, MaxRow]; for (int j = 0; j < MaxRow; j++) for (int i = 0; i < MaxColumn; i++) tile[i, j] = -1; completed = false; base.Initialize(); } protected override void LoadContent() { (割愛(画像のロードを定義)) } protected override void UnloadContent() { } protected override void Update(GameTime gameTime) { if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed) this.Exit(); KeyboardState currentKeyboardState = Keyboard.GetState(); if (lastKeyboardState.IsKeyUp(Keys.Down) && currentKeyboardState.IsKeyDown(Keys.Down)) { if (++currPosition.Y >= MaxRow) currPosition.Y = MaxRow - 1; } (割愛(上記のDownと同様なUp, Left, Right) lastKeyboardState = currentKeyboardState; if (tile[currPosition.X, currPosition.Y] < 0) { int num = CheckNumKeys(currentKeyboardState); if (num >= 0) { tile[currPosition.X, currPosition.Y] = num; if (CheckComplete()) completed = true; } } base.Update(gameTime); } protected override void Draw(GameTime gameTime) { GraphicsDevice.Clear(Color.CornflowerBlue); spriteBatch.Begin(); for (int row = 0; row < MaxRow; row++) { for (int column = 0; column < MaxColumn; column++) { spriteBatch.Draw((currPosition == new Point(column, row)) ? highlightTexture : tileTexture, new Vector2(TileWidth * column, TileWidth * row), Color.White); if (tile[column, row] >= 0) spriteBatch.Draw(numbersTexture, new Vector2(TileWidth * column + (TileWidth - LetterWidth) / 2, TileHeight * row + (TileHeight - LetterHeight) / 2), new Rectangle(LetterWidth * tile[column, row], 0, LetterWidth, LetterHeight), Color.White); } } spriteBatch.End(); } int CheckNumKeys(KeyboardState keyboardState) { int keyCode = (int)Keys.D0; for (int i = 0; i <= 9; i++) { if (lastKeyboardState.IsKeyUp((Keys)keyCode) && keyboardState.IsKeyDown((Keys)keyCode)) return i; keyCode++; } return -1; } bool CheckComplete() { for (int j = 0; j < MaxRow; j++) { for (int i = 0; i < MaxColumn; i++) { if (tile[i, j] < 0) return false; } } return true; } }

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

ざっと見た限りですが……。 > if (lastKeyboardState.IsKeyUp((Keys)keyCode) && keyboardState.IsKeyDown((Keys)keyCode)) がキーの押下判定ですよね。 ところが,ここを呼び出す前に, > lastKeyboardState = currentKeyboardState; > if (tile[currPosition.X, currPosition.Y] < 0) > { >  int num = CheckNumKeys(currentKeyboardState); と,lastKeyboardStateにcurrentKeyboardState (CheckNumKeys内でのkeyboardState) を代入してしまっています。 よって,押下判定は, if (keyboardState.IsKeyUp((Keys)keyCode) && keyboardState.IsKeyDown((Keys)keyCode)) と等しくなります。 ある瞬間に一つのキーが「押されている」と「押されていない」の両方の状態をとることはあり得ませんから, 上記のif文の条件式がtrueになることはありません。 で,解決策ですが,base.Updateを呼び出す直前に > lastKeyboardState = currentKeyboardState; を移動するのがよいと思います。

NODOCA
質問者

お礼

長文を読んだ上にご丁寧にありがとうございます! まさしくご指摘の通りで、base.Updateの直前に移動したらちゃんと動いてくれました。 一文の位置を間違うだけで思いどおりに動かないプログラミングを改めて難しいと感じさせられました^^;

関連するQ&A

  • 数独解答判定プログラム

    数独の解答判定プログラムを作成しているのですが、完成しません。下に僕の作ったプログラムを載せておくので間違い等の指摘をお願いします。 #include <stdio.h> #define row 9 #define column 9 int question[row][column]={ 915284376, 273916584, 468753912, 396178245, 742365891, 851492637, 629847153, 587631429, 134529768, }; int num; int singlenumber(void); int saferow(int, int); int safecolumn(int, int); int safebox(int, int, int); int main(void){ int judge; for(num = 1; num <= 9; num++){ int singlenumber(void); } if(judge == 0){ printf("おめでとう!! 正解です。"); }else{ printf("残念!! 不正解です。"); } return 0; } int singlenumber(void){ int i, j; int row_judge; int column_judge; int box_judge; int judge; for(i = 0; i < row; i++){ int saferow(int i, int num); } for(j = 0; j < column; j++){ int safecolumn(int j, int num); } for(i = 0; i < row; i++){ for(j = 0; j < column; j++){ int safebox(int i, int j, int num); } } if(row_judge == 0 && column_judge == 0 && box_judge == 0){ judge = 0; }else{ judge = 1; } return judge; } int saferow(int i, int num){ int k; int row_judge; for(k = 0; k < column; k++){ if(num == question[i][k]){ row_judge = 0; }else{ row_judge = 1; } } return row_judge; } int safecolumn(int j, int num){ int l; int column_judge; for(l = 0; l < row; l++){ if(num == question[l][j]){ column_judge = 0; }else{ column_judge = 1; } } return column_judge; } int safebox(int i, int j, int num){ int m, n; int box_judge01, box_judge02, box_judge03; int box_judge11, box_judge12, box_judge13; int box_judge21, box_judge22, box_judge23; int box_judge0, box_judge1, box_judge2, box_judge; for(m = 0; m < row ; m++){ if(m / 3 == 0){ for(n = 0; n < 3; n++){ if(num == question[m][n]){ box_judge01 = 0; }else{ box_judge01 = 1; } } for(n = 3; n < 6; n++){ if(num == question[m][n]){ box_judge02 = 0; }else{ box_judge02 = 1; } } for(n = 6; n < 9; n++){ if(num == question[m][n]){ box_judge03 = 0; }else{ box_judge03 = 1; } } } if(box_judge01 == 0 && box_judge02 == 0 && box_judge03 == 0){ box_judge0 = 0; }else{ box_judge0 = 1; } if(m / 3 == 1){ for(n = 0; n < 3; n++){ if(num == question[m][n]){ box_judge11 = 0; }else{ box_judge11 = 1; } } for(n = 3; n < 6; n++){ if(num == question[m][n]){ box_judge12 = 0; }else{ box_judge12 = 1; } } for(n = 6; n < 9; n++){ if(num == question[m][n]){ box_judge13 = 0; }else{ box_judge13 = 1; } } } if(box_judge11 == 0 && box_judge12 == 0 && box_judge13 == 0){ box_judge1 = 0; }else{ box_judge1 = 1; } if(m / 3 == 2){ for(n = 0; n < 3; n++){ if(num == question[m][n]){ box_judge21 = 0; }else{ box_judge21 = 1; } } for(n = 3; n < 6; n++){ if(num == question[m][n]){ box_judge22 = 0; }else{ box_judge22 = 1; } } for(n = 6; n < 9; n++){ if(num == question[m][n]){ box_judge23 = 0; }else{ box_judge23 = 1; } } } if(box_judge21 == 0 && box_judge22 == 0 && box_judge23 == 0){ box_judge2 = 0; }else{ box_judge2 = 1; } if(box_judge0 == 0 && box_judge1 == 0 && box_judge2 == 0){ box_judge = 0; }else{ box_judge = 1; } } return box_judge; }

  • 自作の行列クラスを継承するさいにエラーがでます

    現在、c++の学習で、自作の基底行列クラスMatrixを作成し、このクラスを継承して新たにlduMatrixを作成する事を考えています。 が、継承し、 lduMatrix a( 3, 3); a = 3; とすると、 main.C:13: warning: passing ‘double’ for argument 1 to ‘lduMatrix::lduMatrix(int)’ というエラーがでてコンパイルできずにいます。その一方で、 lduMatrix a(3,3, 3.14); とするとコンパイルはとおり、lduMatrix行列の各要素(a[1][1]など)の値をプリントさせると、[[3.14]]の値が入っていることを確認しております。 どこが間違っているのか御指導いただけると幸いです。 以下、クラスの中身です。よろしくおねがいします。 《Class: Matrix》 #include <iostream> class Matrix{ private: //! Size of row and column in Matrix int row_, col_; //! Row pointers double** m_; //! Allocate function for row-pointers void allocate(); public: Matrix(); //! Constructor with given matrix size Matrix( const int, const int ); //! Constructor with given matrix size and value fro all elements Matrix( const int, const int, const double ); //! Destructor ~Matrix(); ・・・省略・・・ double* operator[]( const int ); double* operator[]( const int ) const ; void operator=( const double ); }; /* Private functions *********************************************** */ void Matrix::allocate() { m_ = new double* [row_]; m_[0] = new double [row_*col_]; for ( int i=1; i<row_; i++ ){ m_[i] = m_[i-1] + col_; } } /* Destructor ****************************************************** */ Matrix::~Matrix(){ delete[] m_[0]; delete[] m_; } /* Constructors **************************************************** */ // NULL constructor Matrix::Matrix() : row_(0), col_(0), m_(NULL) {} // Constructor with given matrix size Matrix::Matrix( const int row, const int col ) : row_(row), col_(col) { allocate(); } // Constructor with given matrix size and value for all elements Matrix::Matrix( const int row, const int col, const double s ): row_(row), col_(col) { allocate(); double* m = m_[0]; for ( int i=0; i<row_*col_; i++ ){ m[i] = s; } } 《省略》 /* Member operators ************************************************ */ double* Matrix::operator[]( const int i ){ return m_[i]; } void Matrix::operator=( const double t ){ double* m = m_[0]; int nm = row_*col_; for ( int i=0; i<nm; i++ ) { m[i] = t; } } 《Class: lduMatrix》 class lduMatrix : public Matrix{ public: lduMatrix(); lduMatrix( const int ); lduMatrix( const int, const double ); }; lduMatrix::lduMatrix() {} lduMatrix::lduMatrix( const int mSize ) : Matrix( mSize, mSize, 0.0 ) {} lduMatrix::lduMatrix( const int mSize, const double s ) : Matrix( mSize, mSize, s ) {}

  • ソースコードを簡潔に直したいのですが…

    有限積分法(参考 http://www.akita-nct.jp/yamamoto/study/thesis/2005/thesis_namekawa.pdf) を用いて、格子点 ( i, j, k )の磁場成分 Bx, By, Bz をその周辺を囲む電場成分 Ex, Ey, Ez で逐次計算するコードは次のようになります。 for ( i = 0; i < i_max; i++ ) {   for ( j = 0; j < j_max; j++ ) {     for ( k = 0; k < k_max; k++ ) {       Bx [ i ][ j ][ k ] = Ey [ i + 1 ][ j ][ k ] - Ey [ i + 1 ][ j ][ k + 1 ] + Ez [ i + 1 ][ j + 1 ][ k ] - Ez [ i + 1 ][ j ][ k ];       By [ i ][ j ][ k ] = Ez [ i ][ j + 1 ][ k ] - Ez [ i + 1 ][ j + 1 ][ k ] + Ex [ i ][ j + 1 ][ k + 1 ] - Ex [ i ][ j + 1 ][ k ];       Bz [ i ][ j ][ k ] = Ex [ i ][ j ][ k + 1 ] - Ex [ i ][ j + 1 ][ k + 1 ] + Ey [ i + 1 ][ j ][ k + 1 ] - Ey [ i ][ j ][ k + 1 ];     }   } } 電場成分の係数行列 C ( 0, 1, -1 のいずれかをもつ ) を求める必要が生じた、すなわち CCC  E  B CCC * E = B CCC  E  B のような行列計算に変更するため、次のように書き直しましたが係数行列 C を求める部分を簡潔にできませんでした。 for ( i = 0; i < i_max; i++ ) {   for ( j = 0; j < j_max; j++ ) {     for ( k = 0; k < k_max; k++ ) {       for ( x = 0; x < 3; x++ ) {         row = index ( x, i, j, k, i_max, j_max, k_max );         y = ( x + 1 ) % 3;         z = ( x + 2 ) % 3;         if ( x == 0 ) {           C[ row ][ index ( y, i + 1, j,   k,   i_max, j_max, k_max )] = 1;           C[ row ][ index ( y, i + 1, j,   k + 1, i_max, j_max, k_max )] = -1;           C[ row ][ index ( z, i + 1, j + 1, k,   i_max, j_max, k_max )] = 1;           C[ row ][ index ( z, i + 1, j,   k,   i_max, j_max, k_max )] = -1;         }         if ( x == 1 ) {           C[ row ][ index ( y, i,   j + 1, k,   i_max, j_max, k_max )] = 1;           C[ row ][ index ( y, i + 1, j + 1, k,   i_max, j_max, k_max )] = -1;           C[ row ][ index ( z, i,   j + 1, k + 1, i_max, j_max, k_max )] = 1;           C[ row ][ index ( z, i,   j + 1, k,   i_max, j_max, k_max )] = -1;         }         if ( x == 2 ) {           C[ row ][ index ( y, i,   j,   k + 1, i_max, j_max, k_max )] = 1;           C[ row ][ index ( y, i,   j + 1, k + 1, i_max, j_max, k_max )] = -1;           C[ row ][ index ( z, i + 1, j,   k + 1, i_max, j_max, k_max )] = 1;           C[ row ][ index ( z, i,   j,   k + 1, i_max, j_max, k_max )] = -1;         }       }     }   } } int index ( const int d, const int i, const int j, const int k, const int i_max, const int j_max, const int k_max ) {   return ( ( d * i_max + i ) * j_max + j ) * k_max + k; } void Solver ( const int i_max, const int j_max, const int k_max) {   int row, col,     cell_num = i_max * j_max * k_max;   for ( row = 0; row < cell_num; row++ ) {     for ( col = 0; col < cell_num; col++ ) {       B [ row ] += C [ row ][ col ] * E [ col ];     }   } } 添え字計算が多く、非常に複雑なソースコードですが、規則性があるので、 皆様の力をお借りして簡潔に表現したいです。 よろしくお願いします。

  • csvファイルを読み込んで二次元配列に格納したい

    200×250のある数字と文字の入力されたcsvファイル(またはtxtファイル)を読み込んで2次元配列に格納したいのです。 色々調べるとカンマの処理が必要ということがわかりましたが、どのようにソースを書けばよいかわかりません。使用言語はC言語です。 また、実際にcsvファイルを読み込むようにプログラムを書いてみましたが、すべて-858993460となって表示されます。 プログラミング初心者で勉強中なため困っています。 回答よろしくお願いします。 #include <stdio.h> #include <stdlib.h> #define row 200 #define column 250 int main() { int i, j; int data[row][column]; FILE *fp; fp = fopen("sample.csv", "r"); if (fp == NULL){ printf("ファイルがありません\n"); return 1; } for (i = 0; i < row; i++){ for (j = 0; j < column; j++){ fscanf(fp, "%lf", &data[i][j]); } } for (i = 0; i<row; i++){ for (j = 0; j < column; j++){ printf("%3d ", data[i][j]); } printf("\n"); } fclose(fp); return 0; }

  • 読み込み回数

    for(int i = 0; i < _column; i++) { for(int j = 0; j < _row; j++) { seat= new SeatPanel(); //新しく作ったパネルをシートリストに追加している。 if (reverse == true) { _seatlist.addLast(seat); } else { _seatlist.addFirst(seat); } this.add(seat); } } for(int muda = 0; muda < lseat ; muda++) { //作ったものに対して繰り返し加えて行くには? seat.setUsable(false); _seatlist.addLast(seat); this.add(seat); } これですと、lseatの値に関らず、最後のfor文内の処理が1回しか読まれないのですが、繰り返して読み込ませるにはどうしたらいいでしょうか?(javaです)

  • 下記プログラミングについて

    下のプログラミングの解説ができる方がいましたら教えてください! どう頑張っても理解できなくて困っています;; もしかしたら間違っているところがあるかもしれませんが、よろしくお願いします。 ---------------------------------------------------------------- #include<stdio.h> #include<math.h> main() { int A,B,C,t,h,i,j,k; int sum_column,sum_row,diagonal1,diagonal2; int conf,diag,seed,max; int U[101][101],V[101][101]; int rand(); A=1,B=1,C=1; printf("Please define the pueen problem size(5-100).\n"); scanf("%d", &max); printf("Please input a seed(0-999).\n"); scanf("%d", &seed); for(i=1; i<=seed; i++){ U[1][1]=rand(); }; for(i=1; i<=max; i++){ for(j=1; j<=max; j++){ U[i][j] = -(abs(rand() % 8)); V[i][j]=0; }; };   /* Main program */ t=0; diag=1; while((diag>0)&&(t<500)){ diag=0; for(i=1; i<=max; i++){ for(j=1; j<=max; j++){ sum_column=0; sum_row=0; for(k=1; k<=max; k++){ sum_row=sum_row+V[i][k]; sum_column=sum_column+V[k][j]; } diagonal1=0; k=1; while(((j+k)<=max)&&((i-k)>=1)){ diagonal1=diagonal1+V[i-k][j+k]; k++; } k=1; while(((j-k)>=1)&&((i+k)<=max)){ diagonal1=diagonal1+V[i+k][j-k]; k++; } k=1; while(((j+k)<=max)&&((i+k)<=max)){ diagonal2=diagonal2+V[i+k][j+k]; k++; } k=1; while(((j-k)>=1)&&((i-k)>=1)){ diagonal2=diagonal2+V[i-k][j-k]; k++; } k=1; h=0; conf=1; if(sum_column == 0) h=1; if(sum_row == 0) h++; if((sum_column+sum_row==2) && (diagonal1<2) && (diagonal2<2)) conf=0; U[i][j]=U[i][j]-A*(sum_row+sum_column-2)-B*(diagonal1+diagonal2)+C*h; if(U[i][j]>8) U[i][j]=8; if(U[i][j]<-8) U[i][j]=-8; if(U[i][j]>0) V[i][j]=1; else V[i][j]=0; diag=diag+conf; }; }; t++; printf("t=%d\n", t); if((t % 15) < 5) C=4; else C=1; }; printf("the number of iteretion steps=%d\n", t); printf("\n"); for(i=1; i<=max; i++){ for(j=1; j<=max; j++){ if(j==max){ if(V[i][j]==1) printf("*\n"); else printf("-\n"); } else{ if(V[i][j]==1) printf("* "); else printf("- "); } } } }

  • C++のプログラムのエラー原因のアドバイスお願いします。

    C++のソース内でエラーがでます。 エラー箇所は以下の関数内の最初と最後のflagに対する処理部分です。 ★マークをつけた部分が違うのかと思うのですが、 他人のプログラムなのでどこをどう直せばいいかわかりません。 処理部分ではflag[i][j]なのに宣言が★になる意味もわかりません・・・。new,deleteはこれで大丈夫なのかとか。 どなたかアドバイスお願いします。 環境:visual studio.NET, windowsXP 関数 { register int i, j; int row,col; bool **flag = new bool *[row+2];//★ for (i = 0; i < row+2; i++) flag[i] = new bool[col+2];//★ num_feature_point = 0; for (i = 0; i < row+2; i++) {  for (j = 0; j < col+2; j++) { /*/*ここからflag[i][j] = false; などの処理が数行*/*/ for (i = 0; i < row+2; i++) delete [] flag[i]; delete [] flag; }

  • Excel VBA; 複数のループ処理

    ↓のようなコードがあります。 Dim i As Long, MaxRow1 As Long, MaxRow2 As Long MaxRow1 = Worksheets("Sheet1").Cells(Rows.Count, 1).End(xlUp).Row MaxRow2 = Worksheets("Sheet2").Cells(Rows.Count, 1).End(xlUp).Row For i = 1 To MaxRow1 Worksheets("Sheet1").Cells(i, 1).Value = i . Next i For i = 1 To MaxRow2 Worksheets("Sheet2").Cells(i, 1).Value = i . Next i これらを最大行の多いシートに合わせて、パフォーマンスを良くしたいと思います。 同様の処理をシート1、シート2で実施しているので纏めて記述したいです。 シート1、シート2に対する処理をサブルーチンにする方法しかありませんか? どなたかお願いします。 If MaxRow1 >= MaxRow2 Then For i = 1 To MaxRow1 Else For i = 1 To MaxRow2 End If Worksheets("Sheet1").Cells(i, 1).Value = i Worksheets("Sheet2").Cells(i, 1).Value = i . Next i

  • 配列のエラーが出る(opencv)

    3次元配列を用いて、ルックアップテーブルを作成しているのですが、下のようなエラーが出て困っています。 『○○○の 0x000000013f336f85 でハンドルされていない例外が発生しました: 0xC0000005: 場所 0xffffffffffffffff を読み込み中にアクセス違反が発生しました。』 いろいろ調べてみたのですが、私自身の力だけでは解読できません。 どうぞよろしくお願いします。 //LUTの作成 int ***LUT = new int**[180]; for(int i=0;i<180;i++){ LUT[i] = new int*[255]; } for(int i=0;i<180;i++){ for(int j=0;j<255;j++){ LUT[i][j] = new int[255]; } } for(int i = 0; i < 180; i++){ for(int j = 0; j < 255; j++){ for( int k = 0; k < 255; k++){ LUT[i][j][k]= 0; if(6 < i && i< 38){ if( 79 < j && j < 256){ if( 0 <= k){ LUT[i][j][k] = 1; } } } } } } //LUT作成終了 cvCvtColor(image3, image5, CV_BGR2HSV); IplImage* image5 = cvCreateImage(cvSize(640, 480), IPL_DEPTH_8U, 3); //if(hand == 0){ for(int i = 0; i < 480; i++){ for(int j = 0; j <680 ; j++){ //判定(LUT[ Hの値 ][ Sの値 ][ Vの値 ] ) if((LUT[(unsigned char)image5->imageData[( i * image5->widthStep + j) * 3 + 0]] [(unsigned char)image5->imageData[( i * image5->widthStep + j) * 3 + 1]] [(unsigned char)image5->imageData[( i * image5->widthStep + j) * 3 + 2]]) == 1){ printf("1\n"); } else{ printf("0\n"); } } } //LUT no atosyori for(int i=0;i<180;i++){ for(int j=0;j<255;j++){ delete[] LUT[i][j]; } } for(int i=0;i<180;i++){ delete[] LUT[i]; } delete[] LUT; よろしくお願いします。

  • 0が表示されてしまいます

    次のようなプログラムを作成し、3つの配列の共通部分を表示したいのですが、うまく表示されず0が何個も表示されました。おかしい部分は/**/で囲みましたので、なぜ0が表示されるのかわかる方いましたら教えてください。お願いします。 import java.util.*; import java.lang.*; public class hairetu { public static void main(String[] args) { Random generator = new Random(); int hairetu[] = new int[90]; for(int i=0; i<90; i++) { hairetu[i] = (int)(Math.random() * 450); } int hairetu2[] = new int[90]; for(int i=0; i<90; i++) { hairetu2[i] = (int)(Math.random() * 450); } int hairetu3[] = new int[90]; int k = 0; for(int i=0; i<90; i++) { for(int j=0; j<90; j++) { if(hairetu[i] == hairetu2[j]) { hairetu3[k] = hairetu[i]; System.out.println(hairetu3[k]); k++; } } } System.out.println("\n---------------------------------\n"); int hairetu4[] = new int[90]; for(int i=0; i<90; i++) { hairetu[i] = (int)(Math.random() * 450); } /* int hairetu5[] = new int[90]; int m = 0; for(int i=0; i<90; i++) { for(int j=0; j<90; j++) { if(hairetu3[i] == hairetu4[j]) { hairetu5[m] = hairetu3[i]; System.out.println(hairetu5[m]); m++; } } }*/ } }

    • ベストアンサー
    • Java

専門家に質問してみよう