将char添加到数组的前面

时间:2013-12-12 02:24:29

标签: java arrays

我正在编写一个类作为一个赋值,我正在努力研究类中的一个函数。该类称为PowerArray,并且出于问题的目的,它具有两个实例变量,一个是称为数据的内部数组。另一个是伯爵。数据可以包含20,但计数会跟踪数组的当前长度。既然背景已经存在,问题就在于,我正在尝试在数组的前面添加一个字符,但我似乎无法让它工作。我目前的努力低于

  public int addFront(char ch)
  {
    if(count<MAX)
    {
      for(int i = 0; i<count; i++)
      {
        data[i] = data[i+1]; 
      }//for
      data[0] = ch; 
      count++;
      return 0;
    }//if
    else
      return 1;
  } //addFront(char)

P.S:Max是数据数组的最大大小,因此它是数组的真实大小。另外,在这种情况下,我并不担心会出现溢出,我根本就不想预先形成这个功能。

2 个答案:

答案 0 :(得分:1)

应该是:

for (int i = count-1; i >= 0; i--)
{
    data[i+1] = data[i]
}

现在你正在改变你的角色。

如果您的初始数组是[&#39; a&#39;,&#39; b&#39;,&#39; c&#39;,&#39; d&#39;,null,... ],你的for循环会这样做:

// count = 4
data[0] = data[1] // 'b'
data[1] = data[2] // 'c'
data[2] = data[3] // 'd'
data[3] = data[4] // null

让您的阵列成为[&#39; b&#39;,&#39; c&#39;,&#39; d&#39;,null,...]。

通过向另一个方向迭代,你将得到你想要的东西。

答案 1 :(得分:0)

由于您将所有内容都移到右侧,因此您需要从单词的右侧开始。否则,如果您选择abc并开始将a向右移动,现在您已经aac了,在下一步中,您将尝试将第二个字符向右移动......你认为它是b,但是你的第一步是a ...所以你最终会在整个单词上复制第一个字符。

假设MAX是一个始终等于数组大小的常量,您的代码应如下所示:

if(count < MAX) {
    for(int i = count; i >= 0; --i) {
        data[i+1] = data[i];
    }
    data[0] = ch;
    count++; //since we added a character to it
    return 0;
} else {
    return 1;
}

作为与您遇到的问题无关的说明,您是否愿意解释为什么您的函数返回int并返回01return是否应该代表字符是否被移位?如果是这样,为什么不返回boolean

无论如何,0评估为false(如果将其评估为布尔值),而1将评估为true,因此它会交换返回的意义(如果移动发生,则返回1true,如果不移动则返回0false