【问题标题】:How to modify a java program from arrays to arraylist objects?如何将java程序从数组修改为arraylist对象?
【发布时间】:2011-03-28 14:30:49
【问题描述】:
// 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

那是我需要修改的程序。我要将数组修改为 arraylist 对象,但我不知道该怎么做。任何信息/广告都是有帮助的。如果您需要知道任何其他问题,我会告诉您。再次感谢您的帮助。

【问题讨论】:

  • 是的,我不会撒谎。我只是不知道如何做这个程序。这是我在这里的唯一原因。我不明白。
  • 是的,这是作业。我没有要求任何人为我做这件事。我要问的只是关于如何做的建议。我迷路了,不明白,所以我正在努力。我征求意见并不坏。如果没有人愿意为需要它的人提供建议,那么任何人都无法学习。感谢任何提供建议的人。我非常感谢它,它帮助我了解我需要做什么。

标签: java arrays refactoring arraylist


【解决方案1】:

首先改变markers的类型:

private ArrayList<Integer> markers;

您的 IDE 现在应该向您显示很多错误,因为 ArrayList 和数组不可互换。修复这些错误,您就完成了。

【讨论】:

  • 好的,所以我更改了标记,但我不确定我在做什么。我正在阅读并阅读我的错误并尝试更改它们,但我不知道它们是什么。
  • 我想这是作业部分:找出你在做什么。阅读文档。谷歌!说真的,谷歌。信息就在那里。
  • 相信我,我用过谷歌,我已经并且仍在阅读它。我只是不明白。不过感谢您的建议。
【解决方案2】:

我没有看到公开数组的公共 api。所以不需要把它从数组改成ArrayList。

如果您仍然需要更改它。看看 ArrayList API: http://download.oracle.com/javase/6/docs/api/java/util/ArrayList.html

您可以使用数组和 [index] 做什么,您可以使用 .get(index) 和 .set(index) 方法在 ArrayList 上做什么。

myArray.length 是 myArrayList.size()。

【讨论】:

    【解决方案3】:

    您可以先将所有 标记 从数组更改为 ArrayList,然后修复错误。

    但更好的方法是考虑您正在执行的操作类型。您通常对数组执行许多操作:创建它、添加元素、获取元素。你如何为数组做这些事情?你如何为 ArrayList 做这些?如果您不知道,请在 ArrayList 文档中查找。找到它为数组完成的位置,然后更改为它为 ArrayList 完成的方式。

    更重要的是,数组和 ArrayList 在结构上的根本区别是什么。你在课堂上被教过(提示 - 尺寸是多少?)。这对您向它们添加对象的方式有影响吗?也许您应该改变添加对象的方式?

    【讨论】:

      【解决方案4】:

      根据上述答案获得 ArrayList 对象“标记”后,这里是 ArrayList 基础知识(确实不言自明):

      • 添加(对象)
      • get(int)
      • 尺寸()
      • 删除(整数)
      • indexOf(Object) - 查找索引 对象的第一次出现
      • 清除()

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-05-08
        • 2017-09-30
        • 1970-01-01
        • 2018-03-27
        • 1970-01-01
        • 2012-10-11
        • 2020-11-15
        • 2018-11-03
        相关资源
        最近更新 更多