以下是我写的一个小容器,初学让大家见笑了!麻烦各位学长帮忙纠错,帮忙调试一下,万分感激!
    说明: 我想从磁盘读入元素序列,并将该元素序列赋给一 个字符数组,希望该数组的长度可变(这点我没太做到),用户输入多少元素就输出其相应的元素个数,实现添加,删除,查找,判断是否为空等功能.
/**
 * java实现线性表容器
 * 要求用接口实现线性表的以下功能
 * 求元素个数,末尾添加
 * 插入元素,删除指定下标处的元素
 * 求元素位址,判断是否为空等功能
 */import java.io.*;public class Xxb { public static void main(String[] args)throws IOException {
Collection1 coll;
                  coll=new getcount(); coll.getcount();
          // 接口回掉输出元素个数方法 coll=new add('wo');
                   coll.add(10);                 coll=new delet(3);
            // 接口回掉删除元素方法 coll.delet(5); coll=new insert(); coll.insert(2,'univercity');
           // 在下标2处插入元素,接口回掉
coll=new at(); coll.at(6);//接口回掉 返回下标6处的元素
coll=new isEmperty();
coll.isEmperty();// 接口回掉 判断元素序列是否为空



}
}interface Collection1 { public int getcount(String[] inlist);
             // 输出元素个数 public boolean add(String value);
            // 末尾添加元素 public boolean delet(int index);
            // 删除下表为index的元素 public boolean insert(int index, String x);// 在index下标处插入x元素 public String at(int index);   
          // 返回下标为index的元素 public boolean isEmperty(String[] inlist);// 判断元素序列是否为空}class XianXingBiao implements Collection1 {         BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String line = br.readLine(); String[] inlist = line.split("\\s+");
            // 去掉空白符 public int getcount(String[] inlist) {
             //输出元素个数 int i = 0;
i = inlist.length;
return (i);
} public boolean add(String value) {
                 //末尾添加元素 inlist[inlist.length] = value;
     // 将要添加的元素赋给数组的最后一个元素
if (inlist[inlist.length] == value)
                  // 添加成功
return true;// 返回真
else
return false;// 否则返回假
} public boolean delet(int index) { 
             //删除下表为index的元素 int i;
if (index > 0 && index < inlist.length)
                 // 存在下标
{
for (i = index; i < inlist.length; i++)
inlist[i] = inlist[i + 1];
           // 后一个元素覆盖前一个元素达到删除目的
return true;// 删除成功返回真 } else
return false;// 否则返回假
}public boolean insert(int index,String x){//在index下标处插入x元素      if(index>0&&index<inlist.length)
                  // 下标存在
      {
     for(int i=inlist.length;i>=index;i--)
          // 从最后一个元素开始到index
     inlist[i+1]=inlist[i];// 元素逐个后移
         inlist[index]=x;// 插入元素
               inlist.length=inlist.length+1;// 数组长度加1
         return true;// 插入成功返回真
      }
      else 
      {
      return false;// 否则返回假
         }
         
     }public String at(int index) {
              // 返回下标为index的元素 if (index > 0 && index < inlist.length)
                        // 下标存在
return inlist[index];
                  // 返回下标为index的元素
else
System.out.println("不存在下表为index的元素!");
                 // 否则元素不存在
return ("-1");
}public boolean isEmperty(String[] inlist) {
                    //判断元素序列是否为空 if (inlist.length != 0)
          // 数组不为空返回真,否则返回假
{
return true;
} else {
return false;
}
}}

解决方案 »

  1.   

    你的这个实现是用数组作为底层结构的,而数组一般给定义以后,他的大小就不会变,即数组元素个数是不会改变的。你在public boolean add(String value) 函数中直接给数组后面加上一个值, 可能会报错的,如果你想实现这个功能,最好用已经提供好的 ArrayList 实现
      

  2.   

    我这边是用xml document对象的解析方法,把数据存入xml对象里,然后可以直接添加,删除,查找,判断等功能.xml的好处是对任何树状结构的数据都可以应用.而且长度,分枝,元素个数任意.看了mm的方法,似乎略有相似.
      

  3.   

    嗯...一说MM..肯定会有很多热心的学长来的..嗯嗯....当然.可能连学弟都来..如果你希望数组长度可变的话..那不用用 String[],建议用ArrayList,如果元素不是基本数值类型.那用Vector也不错.PS:我也是一菜.说得不好大家批判