黑马程序员技术交流社区

标题: 做一个题(元素移除)遇到问题了,求帮忙 [打印本页]

作者: 冥夜    时间: 2014-11-9 20:46
标题: 做一个题(元素移除)遇到问题了,求帮忙
本帖最后由 冥夜 于 2014-11-10 14:32 编辑

rt,题目要求是依次输出n,数组A[n],del。n为数组内数据个数,del为要删除的数据,最后返回删除后剩余数据的个数。写了代码但是运行提示角标越界。。求哪里出错了
示例:
输入:2 3 1 3
输出:1

以下是代码
  1. import java.util.ArrayList;
  2. import java.util.Scanner;

  3. public class Remove_9
  4. {
  5.         public static void main(String[] args)
  6.         {
  7.                 System.out.println(length());
  8.         
  9.         }
  10.         

  11.         public static int length()
  12.         {
  13.                 Scanner input=new Scanner(System.in);
  14.         int n=input.nextInt();
  15.         int[] A=new int[n];
  16.         ArrayList al=new ArrayList();
  17.         for(int i=0;i<n;i++)
  18.         {
  19.                 A[i]=input.nextInt();
  20.                 al.add(A[i]);
  21.         }
  22.         int del=input.nextInt();        
  23.         while(al.contains(del))
  24.         {
  25.                 al.remove(del);
  26.         }
  27.                 return al.size();
  28.                
  29.                
  30.         }
  31.         
  32.         
  33. }
复制代码




作者: 冥夜    时间: 2014-11-9 21:15
- -找到问题了。。。第19行al.remove(del);中,因为remove方法有两种,一种是remove(int index)一种是remove(Object obj)。因为del是int类型所以默认删除del角标的数据所以出现了角标越界。。正确应该给del提升下类型。。。
作者: hailong    时间: 2014-11-9 21:24
没有看明白你要实现什么功能,麻烦把要实现的功能说详细点
作者: 冥夜    时间: 2014-11-9 21:25
本帖最后由 冥夜 于 2014-11-9 21:27 编辑
hailong 发表于 2014-11-9 21:24
没有看明白你要实现什么功能,麻烦把要实现的功能说详细点

给定一个数组和一个数(该数不一定在数组中),从数组里删掉这个数字,返回剩下的数组长度。
如:A[] = {1, 2, 3, 4, 5}, 要删除数字3, 那么返回数组长度为4.
格式:

输入一个数n,继而输入一个数组A[n],接着输入要删除的元素elem,返回剩余数组长度index.

样例输入

2
3 3
3
样例输出

0就是最简单的删除,就是输入的是数组要进行转化。

作者: 郑飞    时间: 2014-11-11 05:06
可以直接数组搬家 过程中判断下转移的元素是不是目标元素 最后返回新数组长度




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2