用户输入一个int,它被添加到一个数组中 - Java

时间:2015-05-14 05:36:05

标签: java arrays methods

我希望add()方法做的psudeo代码。几乎提示用户键入数字。一旦他们输入一个数字,该数字将被添加到数组[0],其他每个值将被推高一个。但是阵列只有20.length。所以每个数组[20]都被删除了。 (加入循环,所以他们仍然被问到)。请帮我制作这个add方法,或者给我看一个执行此操作的java方法。 (不使用.list方法)。提前致谢。

public static void main(String[] args) {
    int[] array = new int[1];
    Scanner sc = new Scanner(System.in);

    int num;
    num = sc.nextInt();
    add(num); 

    for(int i = 0; i < array.length; i++) {
        println(array[i]);
    }
}

public void add(int value) {
    array[0] = value;

    for(int i = 0; i < array.length; i++) {    
      if(array[i + 1] == already has value) {
         // then shift numbers one to the right;
      } else if(array.length > 20) {
         //then delete array[19];
      }
  }
}

4 个答案:

答案 0 :(得分:1)

您希望在添加值之前将整个列表向左移动。考虑这个算法: 1.从列表的倒数第二个元素开始,向右移动,覆盖最后一个元素存在的元素。 2.对所有值到第一个值执行此操作。 3.将array [0]设置为值

你已经完成了。

答案 1 :(得分:1)

数组是&#34;连续的内存块&#34;,所以为了在这些块的开头添加一个值,你必须先将其余的值移到相应的块上。

-(void)handleTap:(UITapGestureRecognizer *) tapper {
    CGPoint touchPoint = [tapper locationInView:tapper.view];
    if ([self.imageView.shape containsPoint:touchPoint]) {
        NSLog(@"touched");
        // do what you want with the touch here
    }
}

答案 2 :(得分:0)

您可以在评论中说明 MadProgrammer ,或者更好地使用ArrayList

来自add(int index, E element)

  

将指定元素插入此列表中的指定位置。将当前位置的元素(如果有)和右侧的任何后续元素移位(将其添加到索引中)。

示例(根据您的需要更改):

List<Integer> list = new ArrayList<Integer>(20);
public void add(int value) {

  list.add(0, value);
  for(int i = 0; i < array.length; i++) {
     list.add(index, value); // this will automatically shift element right
     if(list.size > 20) {
       list.remove(20);
      }
   }
}

答案 3 :(得分:0)

您不希望使用ArrayList的任何原因?如果不是,这可能不是编程任务:)