Как изменить Java-программу с массивов на объекты Arraylist? - PullRequest
0 голосов
/ 28 марта 2011
// sets up random number of markers in a
// one-dimensional array
// numMarkers markers in a board of size boardSize
public class SimpleDotCom
{
  // constants
  private final static int DEFAULT_MARKERS = 3;
  private final static int DEFAULT_BOARD_SIZE = 10;

  // data members
  private int[] markers; // stores the marker positions
  private int boardSize; // stores the size of the board
  private int endOfMarkers;

  // default constructor
  // 3 markers in a board of 10
  public SimpleDotCom()
  {
    this( DEFAULT_MARKERS, DEFAULT_BOARD_SIZE );
  }

  // constructor to set up
  // numMarkers and boardSize
  public SimpleDotCom( int numMarkers, int boardSize )
  {
    markers = new int[numMarkers];
    this.boardSize = boardSize;
    endOfMarkers = markers.length - 1;

    int i, j, randNum;
    int[] original = new int[boardSize];

    for ( i = 0; i < original.length; i++ )
      original[i] = i;

    // scramble original
    for ( i = original.length - 1;
          i >= original.length - markers.length;
          i-- )
    {
      randNum = (int) (Math.random() * (i+1) );
      // swap original[i] and original[randNum]
      j = original[i];
      original[i] = original[randNum];
      original[randNum] = j;
    }

    for ( i = 0; i < markers.length; i++ )
      markers[i] = original[i+original.length-markers.length];
  } // end SimpleDotCom

  // check if the guess is a hit or a miss
  // precondition: guess is valid
  public String checkYourself( int guess )
  {
    for ( int i = 0; i <= endOfMarkers; i++ )
      if ( markers[i] == guess )
      {
        markers[i] = markers[endOfMarkers];
        endOfMarkers--;
        return "Hit";
      }
    return "Miss";
  } // end checkYourself

  // returns the number of markers in the game
  public int numberOfMarkers()
  {
    return markers.length;
  } // end numberOfMarkers

  // returns the size of the board
  public int sizeOfBoard()
  {
    return boardSize;
  } // end sizeOfBoard
} // end SimpleDotCom

Это программа, которую мне нужно изменить.Я должен модифицировать массивы для объектов массива, и я не знаю, как это сделать.Любая информация / адив полезна.Если тебе нужно что-то узнать, спроси меня, и я дам тебе знать.Еще раз спасибо за вашу помощь.

Ответы [ 4 ]

2 голосов
/ 28 марта 2011

Начните с изменения типа markers:

private ArrayList<Integer> markers;

Теперь в вашей среде IDE должно отображаться множество ошибок, поскольку ArrayList и массивы не являются взаимозаменяемыми.Исправьте эти ошибки, и все готово.

1 голос
/ 28 марта 2011

Я не вижу публичного API, который бы выставлял массивы.Поэтому нет необходимости изменять его с массивов на ArrayList.

Если вам все еще нужно изменить его.Посмотрите на ArrayList API: http://download.oracle.com/javase/6/docs/api/java/util/ArrayList.html

Что вы можете делать с массивами и [index] вы можете делать с ArrayList с помощью методов .get (index) и .set (index).

myArray.length - это myArrayList.size ().

0 голосов
/ 28 марта 2011

Если у вас есть «маркеры» объекта ArrayList в соответствии с приведенным выше ответом, вот основные принципы ArrayList (на самом деле, не требующие пояснений):

  • добавить (Object)
  • прибудет (INT)
  • размер ()
  • удалить (INT)
  • indexOf (Object) - находит индекс первое вхождение объекта
  • ясно ()
0 голосов
/ 28 марта 2011

Можно начать с простого изменения всех маркеров с массивов на ArrayList, а затем исправить ошибки.

Но лучший способ сделать это - подумать о видах операций.ты делаешь.Обычно вы делаете с массивом несколько вещей: создаете его, добавляете элемент, получаете элемент.Как вы делаете эти вещи для массива?Как вы делаете их для ArrayList?Посмотрите это в документации ArrayList, если вы не знаете.Найдите места, где это сделано для массива, и перейдите к тому, как это делается для ArrayList.

Что еще более важно, в чем состоит фундаментальное структурное различие между массивами и ArrayList.Вас этому учили в классе (подсказка - какой размер?).Имеет ли это значение для добавления объектов к ним?Может быть, вы должны изменить способ добавления объектов?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...