如何使用ArrayList从Java中的另一个类调用方法?

企鹅

我是Java的初学者,我们有一个在Bingo上要做的程序。您必须让用户输入玩家人数,并且每个玩家都将获得一个局。然后从另一个类中调用一个随机令牌,您必须使用该令牌在板上标记它。我不知道如何弄清楚谁赢了……Mark()出现错误。有人可以帮忙吗?谢谢。

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
    }
}

谢谢大家!我知道...这是一个很长的程序。

QBrute

您正在调用的player.Mark(tempNumber,tempLetter);地方playerArrayList<Board>不具有该方法的地方。它在类Board本身中定义

所以,你要get对当前Board从这个名单和呼叫实例Mark

IE win = player.get(currentPlayerIndex).Mark(tempNumber,tempLetter);

根据您的逻辑,您需要一些currentPlayerIndex可以获取当前播放器/面板的工具。

注意:如@opensam所述,您需要替换while(win = false)while(win == false)或分配false给它win,然后循环中断,然后才能进行一次迭代。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何从另一个.java文件中的另一个类调用方法?

如何从另一个类中迅速调用另一个方法?

使用Rspec,如何测试从Ruby中另一个类调用方法的方法

如何在另一个类中调用一个类的main()方法?

如何调用从Java中另一个类参数的方法?

Java如何在另一个类中调用方法

如何从Java中的另一个类调用actionPerformed方法

如何从Java中的另一个类调用方法webdriver?

如何在Java中从另一个类调用方法?

如何从Java的另一个类中调用某些东西并使用它的Array?

如何从Android中的另一个片段类调用一个片段的方法

如何启动一个Activity并使用另一个类调用该类的方法

如何访问Java中另一个类的另一个方法内的类中的方法

如何在Java中的另一个类中调用数据库助手类的方法-Android

如何在另一个文件的另一个类中调用 php 方法?

Java从另一个类调用方法

如何在同一个类的另一个方法中调用一个方法?

如何从另一个调用类的方法?

如何从另一个类调用HashMap的方法?

如何从另一个类调用 invalidate() 方法?

如何从另一个类调用方法?

Flutter:如何从另一个类调用方法?

如何从另一个项目调用类的方法

如何从另一个小写的类调用方法?

如何从另一个类调用@selector方法

如何从另一个类调用get方法?

如何从另一个类调用void方法

Repaint()方法在另一个类中调用

从UIButton中的另一个类调用方法