新人求助,麻烦各位大神看一下

weixin_44420997 2020-04-16 04:57:40
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
String[] queen = {"甄嬛","西施","王昭君","貂蝉","杨玉环"};
int queenCount = 5;
int days = 1;
while(days <= 10) {
System.out.println("=================================");
System.out.println("第" + days + "天");
System.out.println("=================================");
int choice = 0;
System.out.println("请选择:");
choice = input.nextInt();
switch (choice) {
case 1:
System.out.print("请输入要删除的名字:");
String deleteName = input.next();
int delIndex = -1; //要删除元素的下标
//查找所输入的名字
for (int i = 0; i < queenCount; i++) {
if(deleteName.compareTo(queen[i]) == 0) {
delIndex = i;
break;
}
}
//将查找的元素在queen数组中删除
for (int i = 0; i < queenCount; i++) {
if(queen[i].compareTo(queen[delIndex]) == 0) {
continue;
}
}
queenCount--;
break;
}
System.out.println("=========================================");
for (int i = 0; i < queenCount; i++) {
System.out.println(queen[i] + "\t");
}
days++;
}



输出的结果是
删除的是数组的最后一个元素,要怎么才能把中间的元素删了让后面的替补上来呢?
...全文
98 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
辉酱OvO 2020-04-16
  • 打赏
  • 举报
回复
当你找到需要删除的下标时(当前题目为1) for (int i = 0; i < queenCount; i++) { if(queen[i].compareTo(queen[delIndex]) == 0) { continue; } } queenCount--; break; 这段代码应该做的是将该下标的元素清空,并且将后面的依次补上来才对。而你只是改变了queenCount这个变量的值,实际String[] queen这个数组并没有改变(数组长度不会随着给他设置长度的那个变量,也就是queenCount而改变哦)

62,626

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧