1. 程式人生 > >【Java學習之路---1】List的ArrayList和LinkedList的KTV點歌系統修改

【Java學習之路---1】List的ArrayList和LinkedList的KTV點歌系統修改

本程式碼是參考書籍敲出 ,加入了部分自己的東西讓程式完善一些,謝謝!!!

KTVArrayList程式碼:

 1 import java.util.Scanner;
 2 import java.util.ArrayList;
 3 
 4 public class KTVByArrayList {
 5 
 6     public static void main(String[] args) {
 7         // TODO Auto-generated method stub
 8         // TODO Auto-generated method stub
 9                 System.out.println("----------------歡迎來到點歌介面---------------------");
10 System.out.println("0.新增歌曲至列表"); 11 System.out.println("1.將歌曲置頂"); 12 System.out.println("2.將歌曲前移一位"); 13 System.out.println("3.退出"); 14 ArrayList linkedupList=new ArrayList(); 15 addMusics(linkedupList);
16 while(true) { 17 System.out.println("當前歌曲列表:"+linkedupList); 18 System.out.print("請輸入你需要執行的指令:"); 19 try{int por=new Scanner(System.in).nextInt(); 20 21 switch (por) { 22 case
0: 23 addMusic(linkedupList); 24 break; 25 case 1: 26 topMusics(linkedupList); 27 break; 28 case 2: 29 oneMusics(linkedupList); 30 break; 31 case 3: 32 breakMusics(); 33 default: 34 System.out.println("你輸入的指令錯誤!!!"); 35 break; 36 } 37 }catch (Exception e) { 38 System.out.println("輸入的指令有誤,應該輸入整數錯誤為:"+e);// TODO: handle exception 39 } 40 } 41 42 43 } 44 //隨機新增歌曲 45 private static void addMusics(ArrayList lineupList) { 46 lineupList.add("稻香"); 47 lineupList.add("雙節棍"); 48 lineupList.add("龍拳"); 49 lineupList.add("青花瓷"); 50 lineupList.add("告白氣球"); 51 lineupList.add("手寫的從前"); 52 System.out.println("現已說預設新增歌曲!!!"); 53 } 54 //0.手動新增歌曲到列表 55 private static void addMusic(ArrayList lineupList) { 56 System.out.println("請輸入你要新增的歌曲名字"); 57 String a=new Scanner(System.in).nextLine(); 58 lineupList.add(a); 59 System.out.println("歌曲新增完成"); 60 } 61 //1.將歌曲置頂 62 private static void topMusics(ArrayList lineupList) { 63 System.out.println("請輸入你要置頂的歌曲名字"); 64 Object a=new Scanner(System.in).nextLine(); 65 if(lineupList.equals(a)) { 66 int s=lineupList.indexOf(a); 67 lineupList.remove(s); 68 lineupList.add(0,a); 69 System.out.println("歌曲置頂成功!!"); 70 }else { 71 System.out.println("該歌曲不存在!!!"); 72 } 73 } 74 //2.將歌曲上移一位 75 private static void oneMusics(ArrayList lineupList) { 76 System.out.println("請輸入你要置頂的歌曲名字"); 77 Object a=new Scanner(System.in).nextLine(); 78 if(lineupList.equals(a)) { 79 int s=lineupList.indexOf(a); 80 if(s>0) { 81 lineupList.remove(s); 82 lineupList.add(s-1,a); 83 System.out.println("歌曲上移一位成功!!!"); 84 }else { 85 System.out.println("該歌曲已經在首位!!!"); 86 } 87 }else { 88 System.out.println("該歌曲不存在!!!"); 89 } 90 } 91 private static void breakMusics() { 92 System.out.println("退出成功!!!"); 93 System.exit(0); 94 } 95 }

其中最重要的是異常的處理,沒有異常處理,就會在誤輸入時導致程式奔潰。

KTVLinkedList程式碼:

import java.util.LinkedList;
import java.util.Scanner;
import java.lang.Exception;
public class KTVByLinkedList {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        System.out.println("----------------歡迎來到點歌介面---------------------");
        System.out.println("0.新增歌曲至列表");
        System.out.println("1.將歌曲置頂");
        System.out.println("2.將歌曲前移一位");
        System.out.println("3.退出");
        LinkedList linkedupList=new LinkedList();
        addMusics(linkedupList);
        while(true) {
            System.out.println("當前歌曲列表:"+linkedupList);
            System.out.print("請輸入你需要執行的指令:");
            try{int por=new Scanner(System.in).nextInt();
            
            switch (por) {
            case 0:
                addMusic(linkedupList);
                break;
            case 1:
                topMusics(linkedupList);
                break;
            case 2:
                oneMusics(linkedupList);
                break;
            case 3:
                breakMusics();
            default:
                System.out.println("你輸入的指令錯誤!!!");
                break;
            }
            }catch (Exception e) {
                System.out.println("輸入的指令有誤,應該輸入整數錯誤為:"+e);// TODO: handle exception
            }
        }
        
        
    }
    //隨機新增歌曲
    private static void addMusics(LinkedList lineupList) {
        lineupList.add("稻香");
        lineupList.add("雙節棍");
        lineupList.add("龍拳");
        lineupList.add("青花瓷");
        lineupList.add("告白氣球");
        lineupList.add("手寫的從前");
        System.out.println("現已說預設新增歌曲!!!");
    }
    //0.手動新增歌曲到列表
    private static void addMusic(LinkedList lineupList) {
        System.out.println("請輸入你要新增的歌曲名字");
        String a=new Scanner(System.in).nextLine();
        lineupList.add(a);
        System.out.println("歌曲新增完成");
    }
    //1.將歌曲置頂
    private static void topMusics(LinkedList lineupList) {
        System.out.println("請輸入你要置頂的歌曲名字");
        Object a=new Scanner(System.in).nextLine();
        if(lineupList.equals(a)) {
            int s=lineupList.indexOf(a);
            lineupList.remove(s);
            lineupList.addFirst(a);
            System.out.println("歌曲置頂成功!!");
        }else {
            System.out.println("該歌曲不存在!!!");
        }
    }
    //2.將歌曲上移一位
    private static void oneMusics(LinkedList lineupList) {
        System.out.println("請輸入你要置頂的歌曲名字");
        Object a=new Scanner(System.in).nextLine();
        if(lineupList.equals(a)) {
            int s=lineupList.indexOf(a);
            if(s>0) {
                lineupList.remove(s);
                lineupList.add(s-1,a);
                System.out.println("歌曲上移一位成功!!!");
            }else {
                System.out.println("該歌曲已經在首位!!!");
            }
        }else {
            System.out.println("該歌曲不存在!!!");
        }
    }
    private static void breakMusics() {
        System.out.println("退出成功!!!");
        System.exit(0);
    }

}

兩個系統分別是運用了兩種列表,其中的差距在於集合的add方法,ArrayList的add需要有位置的選擇。