Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/345.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/rust/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 找不到ArrayList对象_Java_Arraylist - Fatal编程技术网

Java 找不到ArrayList对象

Java 找不到ArrayList对象,java,arraylist,Java,Arraylist,NumberTile类为数字磁贴建模,数字磁贴是一个由4个整数组成的数组列表,TileGame类将一个磁贴插入到棋盘中,测试类开始游戏。一只手是一个包含5个NumberTile的数组列表,但是当我编译它时,每次我在TileGame中引用一个包含NumberTile的数组列表时,它都找不到符号NumberTile 我是否需要创建一个包以便它能够识别它?我的导师提供了大部分的陈述,我不能改变它们。我没有键入其他方法,因为我认为它们不是必需的 另外,行TileGame game=new TileGam

NumberTile类为数字磁贴建模,数字磁贴是一个由4个整数组成的数组列表,
TileGame
类将一个磁贴插入到棋盘中,测试类开始游戏。一只手是一个包含5个
NumberTile
的数组列表,但是当我编译它时,每次我在
TileGame
中引用一个包含
NumberTile
的数组列表时,它都找不到符号NumberTile


我是否需要创建一个包以便它能够识别它?我的导师提供了大部分的陈述,我不能改变它们。我没有键入其他方法,因为我认为它们不是必需的

另外,行
TileGame game=new TileGame()表示找不到符号。初始化它的正确方法是什么

我需要任何能得到的帮助。多谢各位

Class
TileGame

public class TileGame 
{ 
    //provided by instructor
private ArrayList<NumberTile> board ;

  // Creates an empty board
   public TileGame() 
   {
     //do not modify this method
       board = new ArrayList<NumberTile>();
   }

  // Accessor for the board
   public ArrayList<NumberTile> getBoard() 
   {
    // Do not modify this method
       return board ;
   }

  // Creates and returns a hand of 5 random number tiles
   public ArrayList<NumberTile> getHand() 
    {
       ArrayList<NumberTile> hand = new ArrayList<NumberTile>() ;

       for (int a = 0; a < 5; a++)
       {
        hand.add(a, new NumberTile());
    }

       return hand;
   }

   // If the current tile fits in the board (without rotating) then
   // return the index i of a tile in the board so that the current tile 
   // fits before ti for i = 0..k-1, or return k if the current tile fits
   // after the last tile.   If the tile does not fit, return -1
   public int getIndexForFit(NumberTile currentTile) 
   {
       NumberTile firstTile = board.get(0);
       NumberTile lastTile = board.get(board.size() - 1);

       if(firstTile.getLeft() == currentTile.getRight())
       {
           return 0;
       }
       else if (lastTile.getRight() == currentTile.getLeft())
       {
           return board.size() - 1;
       }
       else 
       {   
        return -1 ;
       }
   }

   // Call the method getIndexForFit to see whether a tile can be inserted
   // into the board. In this method the tile can be rotated. If the tile
   // can be inserted, return true.  If the tile does not fit after 
   // rotating (at most 3 times), return false.
   public boolean canInsertTile(NumberTile currentTile) 
   {
       //call get index for fit
       int canInsert = getIndexForFit(currentTile);
       boolean canInsertOrNot = false;;
       //if true, modify index
       if(canInsert == -1)
       {
           //rotate
           for (int rotations = 0; rotations < 3; rotations++)
           {
              currentTile.rotate();
              int didRotationWork = getIndexForFit(currentTile);

              if (didRotationWork == -1)
              {
                  continue;
              }

              else if (didRotationWork != -1)
              {
                  canInsertOrNot = true;
              }

           }

           return false;
       }

          else if(canInsert != -1)
          {
              return true;
          }
       return canInsertOrNot;

   }

   // Make a move. I.e. if a tile in the hand fits on the board
   // then remove it from the hand and place it in the board. If no tile
   // from the hand fits, then add another tile to the hand
   public void makeMove(ArrayList<NumberTile> hand) 
   {
       boolean fits;

       for (int x = 0; x < hand.size(); x++)
       {
           //call caninterserttile
           fits = canInsertTile(hand.get(x));

           if(fits)
           {
               int index = getIndexForFit(hand.get(x));
               board.add(index, hand.get(x));
               hand.remove(x);
               break;
           }
           else
           {
               hand.add(hand.size() -1, new NumberTile());
           }

       }
    }

   public String toString() 
   {
       // Do not modify this method
       return board.toString() ;  // ArrayList as a String
   }
 } // end of TileGame class 
public class NumberTile 
{
  public ArrayList<Integer> tile = new ArrayList<>();

// Constructs a NumberTile object using 4 random integers in the 
// range 1 to 9
 public NumberTile() 
  {
     Random generator = new Random() ;

    for (int a = 0; a < 4; a++)
    { 
        int random = generator.nextInt(9);
        tile.add(a, random);
    }

  }
// Rotate the tile 90 degrees
public void rotate() 
{
    int temp = tile.get(0);
    tile.set(0, tile.get(1));
    tile.set(1, tile.get(3));
    tile.set(3, tile.get(2));
    tile.set(2, temp);
}

public int getLeft() 
{
      // Do not modify this method
    return tile.get(0) ;
}

public int getRight() 
{
    // Do not modify this method
    return tile.get(2) ;
}

public String toString() 
{
    String out = "";

        out += "   "+tile.get(0)+"   ";
        out += tile.get(1) + "   " + tile.get(2);
        out += "  "+tile.get(3)+"   ";

    return out;
 }

} // end of NumberTile class
public class TileGameTester {

public static void main(String[] args){
    TileGame game = new TileGame();
    boolean winner = false;

    //get two hands
    ArrayList<NumberTile> hand1 = game.getHand();
    ArrayList<NumberTile> hand2 = game.getHand();

    //create an empty board
    System.out.println(game.getBoard());

    do{
        //make moves
        game.makeMove(hand1);
        game.makeMove(hand2);

        //check if they won
        if (hand1.isEmpty() || hand2.isEmpty())
        {
            winner = true;
        }

    }while(!winner);

    hand1.toString();
    hand2.toString();

    if (hand1.isEmpty() && hand2.isEmpty())
        {
            System.out.println("It is a tie!");
        }
        else if (hand1.isEmpty())
        {
            System.out.println("Player 1 won!");
        }
        else if (hand2.isEmpty())
            System.out.println("Player 2 won!");


   }
}
Class
TileGameTester

public class TileGame 
{ 
    //provided by instructor
private ArrayList<NumberTile> board ;

  // Creates an empty board
   public TileGame() 
   {
     //do not modify this method
       board = new ArrayList<NumberTile>();
   }

  // Accessor for the board
   public ArrayList<NumberTile> getBoard() 
   {
    // Do not modify this method
       return board ;
   }

  // Creates and returns a hand of 5 random number tiles
   public ArrayList<NumberTile> getHand() 
    {
       ArrayList<NumberTile> hand = new ArrayList<NumberTile>() ;

       for (int a = 0; a < 5; a++)
       {
        hand.add(a, new NumberTile());
    }

       return hand;
   }

   // If the current tile fits in the board (without rotating) then
   // return the index i of a tile in the board so that the current tile 
   // fits before ti for i = 0..k-1, or return k if the current tile fits
   // after the last tile.   If the tile does not fit, return -1
   public int getIndexForFit(NumberTile currentTile) 
   {
       NumberTile firstTile = board.get(0);
       NumberTile lastTile = board.get(board.size() - 1);

       if(firstTile.getLeft() == currentTile.getRight())
       {
           return 0;
       }
       else if (lastTile.getRight() == currentTile.getLeft())
       {
           return board.size() - 1;
       }
       else 
       {   
        return -1 ;
       }
   }

   // Call the method getIndexForFit to see whether a tile can be inserted
   // into the board. In this method the tile can be rotated. If the tile
   // can be inserted, return true.  If the tile does not fit after 
   // rotating (at most 3 times), return false.
   public boolean canInsertTile(NumberTile currentTile) 
   {
       //call get index for fit
       int canInsert = getIndexForFit(currentTile);
       boolean canInsertOrNot = false;;
       //if true, modify index
       if(canInsert == -1)
       {
           //rotate
           for (int rotations = 0; rotations < 3; rotations++)
           {
              currentTile.rotate();
              int didRotationWork = getIndexForFit(currentTile);

              if (didRotationWork == -1)
              {
                  continue;
              }

              else if (didRotationWork != -1)
              {
                  canInsertOrNot = true;
              }

           }

           return false;
       }

          else if(canInsert != -1)
          {
              return true;
          }
       return canInsertOrNot;

   }

   // Make a move. I.e. if a tile in the hand fits on the board
   // then remove it from the hand and place it in the board. If no tile
   // from the hand fits, then add another tile to the hand
   public void makeMove(ArrayList<NumberTile> hand) 
   {
       boolean fits;

       for (int x = 0; x < hand.size(); x++)
       {
           //call caninterserttile
           fits = canInsertTile(hand.get(x));

           if(fits)
           {
               int index = getIndexForFit(hand.get(x));
               board.add(index, hand.get(x));
               hand.remove(x);
               break;
           }
           else
           {
               hand.add(hand.size() -1, new NumberTile());
           }

       }
    }

   public String toString() 
   {
       // Do not modify this method
       return board.toString() ;  // ArrayList as a String
   }
 } // end of TileGame class 
public class NumberTile 
{
  public ArrayList<Integer> tile = new ArrayList<>();

// Constructs a NumberTile object using 4 random integers in the 
// range 1 to 9
 public NumberTile() 
  {
     Random generator = new Random() ;

    for (int a = 0; a < 4; a++)
    { 
        int random = generator.nextInt(9);
        tile.add(a, random);
    }

  }
// Rotate the tile 90 degrees
public void rotate() 
{
    int temp = tile.get(0);
    tile.set(0, tile.get(1));
    tile.set(1, tile.get(3));
    tile.set(3, tile.get(2));
    tile.set(2, temp);
}

public int getLeft() 
{
      // Do not modify this method
    return tile.get(0) ;
}

public int getRight() 
{
    // Do not modify this method
    return tile.get(2) ;
}

public String toString() 
{
    String out = "";

        out += "   "+tile.get(0)+"   ";
        out += tile.get(1) + "   " + tile.get(2);
        out += "  "+tile.get(3)+"   ";

    return out;
 }

} // end of NumberTile class
public class TileGameTester {

public static void main(String[] args){
    TileGame game = new TileGame();
    boolean winner = false;

    //get two hands
    ArrayList<NumberTile> hand1 = game.getHand();
    ArrayList<NumberTile> hand2 = game.getHand();

    //create an empty board
    System.out.println(game.getBoard());

    do{
        //make moves
        game.makeMove(hand1);
        game.makeMove(hand2);

        //check if they won
        if (hand1.isEmpty() || hand2.isEmpty())
        {
            winner = true;
        }

    }while(!winner);

    hand1.toString();
    hand2.toString();

    if (hand1.isEmpty() && hand2.isEmpty())
        {
            System.out.println("It is a tie!");
        }
        else if (hand1.isEmpty())
        {
            System.out.println("Player 1 won!");
        }
        else if (hand2.isEmpty())
            System.out.println("Player 2 won!");


   }
}
公共类TileGameTester{
公共静态void main(字符串[]args){
TileGame游戏=新TileGame();
布尔赢家=假;
//有两只手
ArrayList hand1=game.getHand();
ArrayList hand2=game.getHand();
//创建一个空板
System.out.println(game.getBoard());
做{
//搬家
makeMove(hand1);
makeMove(hand2);
//检查他们是否赢了
if(hand1.isEmpty()| | hand2.isEmpty())
{
胜利者=真;
}
}而(!赢家);
hand1.toString();
hand2.toString();
if(hand1.isEmpty()&&hand2.isEmpty())
{
System.out.println(“这是一个平局!”);
}
else if(hand1.isEmpty())
{
System.out.println(“玩家1赢了!”);
}
else if(hand2.isEmpty())
System.out.println(“玩家2赢了!”);
}
}

我认为您可能需要在包声明(如果有)之间插入“import java.util.Random;”和“import java.util.ArrayList;”以及使用这些文件的文件中的类声明。

虽然它不完整,所以我不确定是否要将数据添加到arraylist,但是否找到了符号

我也看不到任何导入语句。你导入对象了吗

例如TileGateMeter应该有import->
import com.something.TileGame
import com.something.NumberTile


还要检查TileGame中是否有import语句,以及arraylist之类的常见导入。您可以将TileGame类导入到TileGameTester类,这可能会解决您的问题。

手的声明可能是错误的,但我不知道还有什么其他方法来创建它们,因为没有手类。有人告诉我必须使用NumberTile ArrayList,但我不知道这有什么意义。它们在同一个文件夹中吗?是的,它们在同一个文件夹中,包括TileGameter?如果它们都在同一文件夹/包中,则不需要导入它们。如果它是不同的,这将解释找不到符号。此外,TileGameTester底部的支架似乎缺失。不确定这是在这个文件夹中还是在您的实际代码中。TileGameTester也在同一个文件夹中。我的教授说我不需要创建一个包,但它可能有用。它会修复找不到符号错误吗?我在使用它们的文件中有它们。我没有包声明getHand()和makeMove()方法在哪里定义?在TileGame类中,我需要创建一个包来执行此操作吗?这可能是个愚蠢的问题,但我对编程还不熟悉