所以我按照我的讲座给出的代码来删除数组中的数据......但是当我显示数据时......似乎数据没有被删除...这里是我删除的方法功能
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不知道为什么
答案 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')