私はJavaの初心者です.Bingoのプログラムもあります。あなたは、ユーザーにプレーヤーの数を入力させ、各プレーヤーはボードを受け取らなければなりません。次に、ランダムなトークンが別のクラスから呼び出され、そのトークンを使用してボード上にマークする必要があります。私は誰が勝ったかを理解する方法を知らないし、Mark()には誤りがある。誰でも助けてくれますか?ありがとう。ここでArrayListを使ってJavaの別のクラスからメソッドを呼び出す方法は?
import java.util.Scanner;
import java.util.ArrayList;
public class Bingo
{
public static void main(String[] args)
{
Scanner a = new Scanner(System.in);
System.out.println("Enter number of players: ");
int num = a.nextInt();
ArrayList<Board> player = new ArrayList<Board>();
for(int i = 0; i < num; i++)
player.add(new Board());
Token one = new Token();
int tempNumber = 0, tempLetter = 0;
boolean win = false;
while(win = false)
{
tempLetter = one.getLetter();
tempNumber = one.getNumber();
char letter;
if(tempLetter == 0)
letter = 'B';
else if(tempLetter == 1)
letter = 'I';
else if(tempLetter == 2)
letter = 'N';
else if(tempLetter == 3)
letter = 'G';
else
letter = 'O';
System.out.println("Token: " + tempNumber + letter);
System.out.println();
win = player.Mark(tempNumber,tempLetter);
}
}
}
は、理事会のクラスです:
public class Board
{
private int[][] card;
private int row, column;
boolean bingo;
public Board()
{
card = new int[5][5];
for(int i = 0; i < card.length; i++)
for(int j = 0; j < card[i].length; j++)
card[i][j] = (int) (Math.random() * 75 + 1);
card[2][2] = 0;
for(int i = 0; i < card.length; i++)
for(int j = 0; j < card[i].length; j++)
{
System.out.print(card[i][j] + " ");
if(j == 4)
System.out.println();
}
bingo = false; //False
row = 0;
column = 0;
}
public boolean Mark(int x, int y)
{
for(int i = 0; i < card.length; i++)
for(int j = 0; j < card[i].length; j++)
{
if(card[i][j] == x)
if(j == y)
{
card[i][j] = 0;
row = i;
column = j;
}
}
System.out.println("Mark: ");
for(int i = 0; i < card.length; i++)
for(int j = 0; j < card[i].length; j++)
{
System.out.print(card[i][j] + " ");
if(j == 4)
System.out.println();
}
Check();
return bingo;
}
private void Check()
{
int flagRow = 0, flagColumn = 0, flagDiagonal = 0;
int tempRow = 0, tempColumn = 0, tempRow1 = 4, tempColumn1 = 4;
//Diagonal check
if(row == column)
{
while(bingo == false)
{
if(card[tempRow][tempColumn] == 0)
{
tempRow++;
tempColumn++;
flagDiagonal++;
}
else if(card[tempRow1][tempColumn1] == 0)
{
tempRow1--;
tempColumn1--;
flagDiagonal++;
}
if(flagDiagonal == 5)
bingo = true;
else
{
tempRow = 0;
tempColumn = 0;
tempRow1 = 4;
tempColumn1 = 4;
flagDiagonal = 0;
}
}
}
//Row and column check
for(int i = 0; i < card.length; i++)
for(int j = 0; j < card[i].length; j++)
{
if(card[i][column] == 0) //Column check
flagColumn++;
if(card[row][j] == 0) //Row check
flagRow++;
}
if(flagRow == 5)
bingo = true;
else if(flagColumn == 5)
bingo = true;
else
{
flagRow = 0;
flagColumn = 0;
}
System.out.println("\nCheck: ");
for(int i = 0; i < card.length; i++)
for(int j = 0; j < card[i].length; j++)
{
System.out.print(card[i][j] + " ");
if(j == 4)
System.out.println();
}
System.out.println("Bingo status: " + bingo);
}
}
そしてここでは、トークンのクラスです:
import java.util.ArrayList;
import java.util.Random;
public class Token
{
ArrayList<Integer> number;
public Token()
{
number = new ArrayList<Integer>();
for(int i = 0; i < 75; i++)
number.add((int)(Math.random() * 75 + 1));
}
public int getNumber()
{
Random rand = new Random();
int temp = number.get(rand.nextInt(number.size()));
number.remove(temp);
return temp;
}
public int getLetter()
{
Random rand = new Random();
int temp = number.get(rand.nextInt(number.size()));
if(temp >= 1 && temp <= 15)
return 0; //B
else if(temp >= 16 && temp <= 30)
return 1; //I
else if(temp >= 31 && temp <= 45)
return 2; //N
else if(temp >=46 && temp <= 60)
return 3; //G
return 4; //O
}
}
はあなたにみんなありがとう!私は知っている...これは長いプログラムです。
「これは長いプログラムです。 - 実際はそうではありません。しかし、このサイトのフォーマットではあまりにも多くの。 [ask]を読んで、スニペットを関連する部分に減らしてください。 [mcve] – Fildor
このエラーを解決するには、 'player.get()。Mark();' – XtremeBaumer
* '' Mark() '" *にエラーがあります。あなたは指定できますか? – QBrute