我这里有我的代码,我在做一些简单的数组。最初这是我作品的输出:
- 的输出:
- 输入商品: _ //我不知道为什么要这样做。
- 主菜单
- 添加项目//显示列表
- 删除项目//显示列表;并搜索要删除的特定项目。
- 排序项目//已列出
- 升序
- 降序
- 删除列表//应返回选项1,即添加项目
- 退出
import java.util.Scanner;
import java.util.Arrays;
import java.util.*;
public class MainArray{
public static void main(String[] args){
Scanner user_input = new Scanner(System.in);
int choice;
int array[] = new int[10]; //Default Size.
choice = menu(user_input);
while(choice != 4){
switch (choice){
case 1: array = addItems(array, user_input); break;
case 2: array = removeItems(array, user_input); break;
case 3: array = sort(array); break;
default: break;
}
choice = menu(user_input);
}
System.out.println("The End");
}
public static int menu(Scanner user_input) {
System.out.println("\n-------");
System.out.println("Here are your choices: \n" + "1: Add Items " + "2: Remove Items " + "3: Sort Items " + "4: End");
System.out.println("-------");
int choice = user_input.nextInt();
return choice;
}
public static int[] addItems(int array[], Scanner user_input){
for(int i = 0; i < array.length; i ++){
System.out.print("Value #" + (i + 1) + ": ");
array[i] = user_input.nextInt();
}
return array;
}
public static int[] removeItems(int array[], Scanner user_input){
System.out.println("Number to be removed: ");
for(int i = 0; i < array.length; i ++){
System.out.println("Item removed: " + array[i]);
try {
array[i] = user_input.nextInt();
}
catch(Exception e){
array[array.length - 1] = 0;
}
}
return array;
}
public static int[] sort(int array[]){
System.out.println("Numbers in Ascending Order:");
for(int i = 0; i < array.length; i ++){
Arrays.sort(array);
System.out.print(" " + array[i]);
}
System.out.println("\nNumbers in Descending Order:");
for(int i = array.length - 1; i >= 0; i --){
System.out.print(" " + array[i]);
}
return array;
}
}
所以现在我需要的是一些帮助,我可以正确删除和删除我的项目。我非常清楚我的代码是错误的,有些是正确的,而且大多数都混淆了。基本上这个:
答案 0 :(得分:1)
因为您在创建整数后尝试操作整数集合,所以需要使用其他类型的集合,例如ArrayList。您可以通过以下方式初始化此类集合:
List<Integer> aList = new ArrayList<Integer>();
请注意,该集合需要Integer对象,但在大多数情况下,autoboxing和auto-unboxing将帮助您传递和检索集合中的项目。您可以像以前一样将用户读入的整数()添加到aList中,Java负责将其包装为Integer对象。
创建此集合后,您可以轻松添加()和删除()内容。 remove()方法只接受您要删除的Object,因此您甚至不需要知道集合中该Object的索引。事实上,还有一个clear()方法可以调用ArrayList,它将完成你所提到的“删除”所有已添加的项目并重新开始。
现在,关于你的循环......你在removeItems()中迭代列表的长度并要求每次删除一个项目似乎很尴尬。如果用户只想删除单个项目怎么办?最好完全取出 for 循环,然后通过从菜单中根据需要选择该选项,让用户决定删除多少项。
最后,如果切换到ArrayList方法,在sort()方法中,您将需要在ArrayList上使用Collections.sort()方法。再一次,不需要在 for 循环中放置Collections.sort()调用。这只是一件效率低下的事情,因为你只需要对你进行一次排序。
这是我正在谈论的方法的一个例子。您将尝试添加一些输入验证等,但它可以说明如何将ArrayList用于您要尝试的事情:
public class Test{
public static void main(String[] args){
Scanner user_input = new Scanner(System.in);
int choice;
List<Integer> aList = new ArrayList<>();
choice = menu(user_input);
while(choice != 4){
switch (choice){
case 1: aList = Test.addItems(aList, user_input); break;
case 2: aList = Test.removeItems(aList, user_input); break;
case 3: Test.sort(aList); break;
default: break;
}
choice = menu(user_input);
}
System.out.println("The End");
}
public static int menu(Scanner user_input) {
System.out.println("\n-------");
System.out.println("Here are your choices: \n" + "1: Add Items "
+ "2: Remove Items " + "3: Sort Items " + "4: End");
System.out.println("-------");
int choice = user_input.nextInt();
return choice;
}
public static List<Integer> addItems(List<Integer> nums, Scanner user_input){
nums.clear();
for(int i = 0; i < 10; i ++){
System.out.print("Value #" + (i + 1) + ": ");
nums.add(user_input.nextInt());
}
return nums;
}
public static List<Integer> removeItems(List<Integer> nums, Scanner user_input){
System.out.println("Number to be removed: ");
Integer remove = user_input.nextInt();
if (nums.contains(remove)) {
nums.remove(remove);
System.out.println("Item removed: " + remove);
}
else {
System.out.println("Number not found.");
}
return nums;
}
public static void sort(List<Integer> nums){
System.out.println("Numbers in Ascending Order:");
Collections.sort(nums);
for(int i = 0; i < nums.size(); i++) {
System.out.print(" " + nums.get(i));
}
System.out.println("\nNumbers in Descending Order:");
for(int j = nums.size() - 1; j >= 0; j --){
System.out.print(" " + nums.get(j));
}
}
}
有关List接口本身的更多信息:
http://docs.oracle.com/javase/tutorial/collections/interfaces/list.html