Java - 在动态 array/list 中添加和删除元素
Java - Add and remove elements from a dynamic array/list
我需要我的数组是动态的,只要用户 enters/deletes 元素。数组不能有已经定义的长度或询问用户长度。例如用户决定添加 5,数组将是:{5},然后用户添加 34 {5,34},然后删除 5,{34}。
有办法吗?我一直在尝试使用列表,但是当我使用 if remove 一个不起作用时,当我将 switch 与此代码一起使用时,它会显示“无法访问的语句”。
到目前为止,这是代码:
List<String> list = new ArrayList<>();
Scanner stdin = new Scanner(System.in);
do {
System.out.println("Current " + list);
System.out.println("Add more? (1) delete one? (2) exit (3)");
int a= stdin.nextInt();
switch(a){
case 1:
System.out.println("Enter: ");
list.add(stdin.next());
break;
case 2:
System.out.println("Enter: ");
list.remove(stdin.next());
break;
case 3:
break;
default:
break;
}
} while (true);
stdin.close();
System.out.println("List is " + list);
String[] arr = list.toArray(new String[0]);
System.out.println("Array is " + Arrays.toString(arr));
您可以尝试使用label。
所以基本上你的 case 3 中的 break 只在 switch 语句之外中断,而不是在 do while 循环之外。
您可以在 do 之前添加一条语句,如下所示:
outerloop:
do{
switch(a){
// rest of your logic
case 3:
break outerloop;
}
}
while(true)
其中 outerloop 是一个标签。请试试这个。
我认为您的 while
声明有问题。
当您使用 break
关键字时,它指的是您的 switch
语句。
所以你永远不会到达循环的尽头。
尝试一些东西来实现break
循环
我需要我的数组是动态的,只要用户 enters/deletes 元素。数组不能有已经定义的长度或询问用户长度。例如用户决定添加 5,数组将是:{5},然后用户添加 34 {5,34},然后删除 5,{34}。 有办法吗?我一直在尝试使用列表,但是当我使用 if remove 一个不起作用时,当我将 switch 与此代码一起使用时,它会显示“无法访问的语句”。 到目前为止,这是代码:
List<String> list = new ArrayList<>();
Scanner stdin = new Scanner(System.in);
do {
System.out.println("Current " + list);
System.out.println("Add more? (1) delete one? (2) exit (3)");
int a= stdin.nextInt();
switch(a){
case 1:
System.out.println("Enter: ");
list.add(stdin.next());
break;
case 2:
System.out.println("Enter: ");
list.remove(stdin.next());
break;
case 3:
break;
default:
break;
}
} while (true);
stdin.close();
System.out.println("List is " + list);
String[] arr = list.toArray(new String[0]);
System.out.println("Array is " + Arrays.toString(arr));
您可以尝试使用label。 所以基本上你的 case 3 中的 break 只在 switch 语句之外中断,而不是在 do while 循环之外。 您可以在 do 之前添加一条语句,如下所示:
outerloop:
do{
switch(a){
// rest of your logic
case 3:
break outerloop;
}
}
while(true)
其中 outerloop 是一个标签。请试试这个。
我认为您的 while
声明有问题。
当您使用 break
关键字时,它指的是您的 switch
语句。
所以你永远不会到达循环的尽头。
尝试一些东西来实现break
循环