您好,登錄后才能下訂單哦!
這篇文章主要為大家詳細(xì)介紹了如何在java項(xiàng)目中利用IO流對(duì)數(shù)組進(jìn)行排序,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,發(fā)現(xiàn)的小伙伴們可以參考一下:
1、排序思路
(1)從字符輸入流中讀取文本,緩沖各個(gè)字符,從而實(shí)現(xiàn)字符、數(shù)組和行的高效讀取
(2)詢問(wèn)用戶需要多少位數(shù)的數(shù)組
(3)轉(zhuǎn)換為數(shù)字類型
(4)將用戶輸入數(shù)字存入數(shù)組
(5)把數(shù)組按排序需求并打印出來(lái)
public static void main(String[] args) { // TODO Auto-generated method stub try { //數(shù)組a()的數(shù)字個(gè)數(shù),由用戶輸入決定 InputStreamReader isr=new InputStreamReader(System.in); //從字符輸入流中讀取文本,緩沖各個(gè)字符,從而實(shí)現(xiàn)字符、數(shù)組和行的高效讀取 BufferedReader bfr=new BufferedReader(isr); //詢問(wèn)用戶需要多少位數(shù)的數(shù)組 System.out.println("請(qǐng)輸入需要多少位數(shù)的數(shù)組:\n"); String a1=bfr.readLine(); //將a1轉(zhuǎn)換為數(shù)字類型 int i=Integer.parseInt(a1); //提示用戶輸入數(shù)組數(shù)據(jù) System.out.println("請(qǐng)向數(shù)組中存入"+i+"個(gè)數(shù)據(jù):\n"); //將用戶輸入數(shù)字存入數(shù)組 Integer[] a=new Integer[i]; for(int j=0;j<i;j++){ System.out.println("第"+(j+1)+"個(gè):"); a[j]=new Integer(bfr.readLine()); } //把數(shù)組按升序排序并打印出來(lái) for(int k=1;k<i;k++){ for(int m=0;m<(i-k);m++){ if(a[m]>a[m+1]){ //Integer temp=new Integer(0); int temp=0; temp=a[m]; a[m]=a[m+1]; a[m+1]=temp; } } } //輸出排序后的數(shù)組 System.out.println("排序后\n"); for(int t=0;t<=i;t++){ System.out.println(a[t]); } } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } } }
實(shí)例擴(kuò)展:
鍵盤錄入5個(gè)學(xué)生信息(姓名,語(yǔ)文成績(jī),數(shù)學(xué)成績(jī),英語(yǔ)成績(jī)),按照總分從高到低存入文本文件。
代碼:
public class TreeSetDemo { public static void main(String[] args) throws IOException{ //創(chuàng)建TreeSet對(duì)象,用接口匿名內(nèi)部類的方式實(shí)現(xiàn)Comparator接口 TreeSet<Student> ts=new TreeSet<Student>(new Comparator<Student>() { //重寫(xiě)Comparator接口中的compare()方法 @Override public int compare(Student s1,Student s2) { //主要排序條件:總成績(jī),按從高到低輸出 int num1=s2.sum(s2)-s1.sum(s1); //次要排序條件,當(dāng)總成績(jī)相同時(shí)按學(xué)生姓名內(nèi)容比較 int num2=(num1==0)?s2.getName().length()-s1.getName().length():num1; return num2; } }); //鍵盤錄入學(xué)生信息 System.out.println("請(qǐng)輸入學(xué)生信息:"); for(int x=1;x<6;x++) { Scanner sc=new Scanner(System.in); System.out.print("請(qǐng)輸入第"+x+"名學(xué)生的姓名:"); String name=sc.nextLine(); System.out.print("請(qǐng)輸入第"+x+"名學(xué)生的語(yǔ)文成績(jī):"); int chineseScore=sc.nextInt(); System.out.print("請(qǐng)輸入第"+x+"名學(xué)生的數(shù)學(xué)成績(jī):"); int mathScore=sc.nextInt(); System.out.print("請(qǐng)輸入第"+x+"名學(xué)生的英語(yǔ)成績(jī):"); int englishScore=sc.nextInt(); //將錄入的學(xué)生信息封裝到學(xué)生對(duì)象里 Student s=new Student(); s.setName(name); s.setChineseScore(chineseScore); s.setMathScore(mathScore); s.setEnglishScore(englishScore); //把學(xué)生對(duì)象添加到集合中 ts.add(s); } //創(chuàng)建字符緩沖輸出流對(duì)象 BufferedWriter bw=new BufferedWriter(new FileWriter("18-1.txt")); //遍歷 for(Student s:ts) { //利用StringBuffer中的追加功能,將需要輸出的信息集合在一起 StringBuffer sb=new StringBuffer(); sb.append(s.getName()).append(",").append(s.getChineseScore()).append(",").append(s.getMathScore()) .append(",").append(s.getEnglishScore()).append(",").append(s.sum(s)); //將信息寫(xiě)入文本文件中 bw.write(sb.toString()); //換行 bw.newLine(); //刷新流 bw.flush(); } //關(guān)閉流,釋放資源 bw.close(); } }
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持億速云。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。