带switch语句的基本数组

时间:2013-09-21 18:23:40

标签: java arrays loops switch-statement

我这里有我的代码,我在做一些简单的数组。最初这是我作品的输出:

  
      
  • 输出:
  •   
  • 输入商品: _ //我不知道为什么要这样做。
  •   
  • 主菜单   
        
    1. 添加项目//显示列表
    2.   
    3. 删除项目//显示列表;并搜索要删除的特定项目。
    4.   
    5. 排序项目//已列出   
          
      • 升序
      •   
      • 降序
      •   
    6.   
    7. 删除列表//应返回选项1,即添加项目
    8.   
    9. 退出
    10.   
  •   
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;
    }
}

所以现在我需要的是一些帮助,我可以正确删除和删除我的项目。我非常清楚我的代码是错误的,有些是正确的,而且大多数都混淆了。基本上这个:

  1. 如何删除列表中的某些项目(例如值#1:50,值#2:90,...,值#10:1)并且我想删除前面的内容。价值#7。
  2. 如何正确显示列表中当前/之前和之后的列表。
  3. 删除我的列表,然后让您返回选项1,即&#34;添加项目&#34;。

1 个答案:

答案 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