【Java學習之路---1】List的ArrayList和LinkedList的KTV點歌系統修改
阿新 • • 發佈:2018-12-08
本程式碼是參考書籍敲出 ,加入了部分自己的東西讓程式完善一些,謝謝!!!
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 case0: 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需要有位置的選擇。