删除数组数据的代码无效

时间:2016-01-04 14:44:18

标签: java arrays function

所以我按照我的讲座给出的代码来删除数组中的数据......但是当我显示数据时......似乎数据没有被删除...这里是我删除的方法功能

  public static void delete()
  {
  char proceed;
  do{
  int j;
  boolean delete=false;
  int arraylength=date.length;

  System.out.print("Enter the date that you want to delete: ");
  String deleteDate=input.next();

     for(index=0;index<arraylength;index++)
     {
        if(date[index].equals(deleteDate))
        {
           for(j=index;j<arraylength-1;j++)
           date[j]=date[j+1];
           delete=true;
           break;
           }//if
           }//for
        if (delete==false)
        {
           System.out.println("The date search has not been reserved yet");
           }
           System.out.print("Delete another data?(Y/N): ");
           proceed=input.next().charAt(0);
           }while(proceed=='Y');

所以我编辑了我的代码...删除部分是我的错误...但仍然无法工作...我必须通过功能去正确...我有4个功能(显示,搜索,更新,删除)我必须首先通过所有这个功能然后我输入删除功能...然后突然它删除数组...如果我从显示我说直接去删除功能...它没有工作.. .i不知道为什么

1 个答案:

答案 0 :(得分:4)

如果一位讲师写这篇文章,他的工作就错了......

if (delete=false)

错误,即如果它们相等,则为delete分配false而不测试(==)。

int j;

当在循环for(int j=index;...)

中使用它时,没有理由在此处定义
public static void delete(String[] date,int arraylength,int index)
...
for(index=0;index<arraylength;index++)

您在使用之前指定了index两次,因此请勿使用传入的index的原始值

for(index=0;index<arraylength;index++)

arrayLength可以从date.length获得,那么为什么在错误时将其传入?

 for(index=0;index<arraylength;index++)
    if(date[index].equals(deleteDate))
       for(j=index;j<arraylength-1;j++)

这意味着您将所有日期复制回数组步骤但从未删除复制的日期,这意味着数组末尾将始终存在副本

}while(proceed=='Y');

==比较对象相等而不是值相等,即它检查两个对象是否相同,而不是两个对象(在这种情况下为String)具有相同的值。在这种情况下,它会工作,但这是错误的,比较String应该用

proceed.compareTo('Y')

或防范多种情况,

proceed.toLowerCase().compareTo('y')