java使用IO流對(duì)數(shù)組排序?qū)嵗v解
在學(xué)會(huì)了java中io流的使用后,我們對(duì)于數(shù)組的排序,又多了一種使用方法。大家知道流處理數(shù)據(jù)的效率是比較理想的,那么在具體操作數(shù)組排序上,很多人對(duì)于排序的方法還沒有明確。下面我們先java使用流對(duì)數(shù)組排序的思路為大家進(jìn)行梳理,然后帶來對(duì)應(yīng)的實(shí)例代碼方法。
1、排序思路
(1)從字符輸入流中讀取文本,緩沖各個(gè)字符,從而實(shí)現(xiàn)字符、數(shù)組和行的高效讀取
(2)詢問用戶需要多少位數(shù)的數(shù)組
(3)轉(zhuǎn)換為數(shù)字類型
(4)將用戶輸入數(shù)字存入數(shù)組
(5)把數(shù)組按排序需求并打印出來
2、實(shí)例
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);
//詢問用戶需要多少位數(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ù)組按升序排序并打印出來
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é)生信息(姓名,語文成績,數(shù)學(xué)成績,英語成績),按照總分從高到低存入文本文件。
代碼:
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>() {
//重寫Comparator接口中的compare()方法
@Override
public int compare(Student s1,Student s2) {
//主要排序條件:總成績,按從高到低輸出
int num1=s2.sum(s2)-s1.sum(s1);
//次要排序條件,當(dāng)總成績相同時(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é)生的語文成績:");
int chineseScore=sc.nextInt();
System.out.print("請(qǐng)輸入第"+x+"名學(xué)生的數(shù)學(xué)成績:");
int mathScore=sc.nextInt();
System.out.print("請(qǐng)輸入第"+x+"名學(xué)生的英語成績:");
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));
//將信息寫入文本文件中
bw.write(sb.toString());
//換行
bw.newLine();
//刷新流
bw.flush();
}
//關(guān)閉流,釋放資源
bw.close();
}
}
到此這篇關(guān)于java使用IO流對(duì)數(shù)組排序?qū)嵗v解的文章就介紹到這了,更多相關(guān)java如何使用流對(duì)數(shù)組排序內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Java全面解析IO流相關(guān)知識(shí)
- 新手小白看過來學(xué)JAVA必過IO流File字節(jié)流字符流
- Java中IO流解析及代碼實(shí)例詳解
- Java之IO流面試題案例講解
- Java IO流深入理解
- Java中IO流解析及代碼實(shí)例
- Java字節(jié)流和字符流總結(jié)IO流!
- Java-IO流實(shí)驗(yàn)
- Java IO流之節(jié)點(diǎn)流與字符流的相關(guān)知識(shí)總結(jié)
- java基礎(chǔ)入門之IO流
- Java IO流學(xué)習(xí)總結(jié)之文件傳輸基礎(chǔ)
- Java如何基于IO流實(shí)現(xiàn)同一文件讀寫操作
- Java IO流常用字節(jié)字符流原理解析
- Java IO流和文件操作實(shí)現(xiàn)過程解析
- java中的IO流
相關(guān)文章
java實(shí)現(xiàn)定制數(shù)據(jù)透視表的示例詳解
數(shù)據(jù)透視表(Pivot?Table)是一種數(shù)據(jù)分析工具,通常用于對(duì)大量數(shù)據(jù)進(jìn)行匯總、分析和展示,本文主要介紹了如何使用Java將計(jì)算項(xiàng)添加到數(shù)據(jù)透視表中,感興趣的可以了解下2023-12-12
springMVC 用戶登錄權(quán)限驗(yàn)證實(shí)現(xiàn)過程解析
這篇文章主要介紹了springMVC 用戶登錄權(quán)限驗(yàn)證實(shí)現(xiàn)過程解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-11-11
Java數(shù)組模擬優(yōu)先級(jí)隊(duì)列數(shù)據(jù)結(jié)構(gòu)的實(shí)例
這篇文章主要介紹了Java數(shù)組模擬優(yōu)先級(jí)隊(duì)列數(shù)據(jù)結(jié)構(gòu)的實(shí)例,優(yōu)先級(jí)隊(duì)列中的元素會(huì)被設(shè)置優(yōu)先權(quán),本文的例子借助了Java中的TreeSet和TreeMap,需要的朋友可以參考下2016-04-04
基于javaweb+jsp的游泳館會(huì)員管理系統(tǒng)(附源碼)
這篇文章主要介紹了基于javaweb+jsp的游泳館會(huì)員管理系統(tǒng),開發(fā)工具eclipse/idea/myeclipse/sts等均可配置運(yùn)行,此源代碼社和課程設(shè)計(jì),大作業(yè)及畢業(yè)設(shè)計(jì)項(xiàng)目,需要的朋友可以參考下2022-04-04
Java設(shè)計(jì)模式之享元模式實(shí)例詳解
這篇文章主要介紹了Java設(shè)計(jì)模式之享元模式,結(jié)合實(shí)例形式詳細(xì)分析了享元模式的概念、功能、定義及使用方法,需要的朋友可以參考下2018-04-04
IDEA安裝lombok插件設(shè)置Enable Annotation Processing后編譯依然報(bào)錯(cuò)解決方法
這篇文章主要介紹了IDEA安裝lombok插件設(shè)置Enable Annotation Processing后編譯依然報(bào)錯(cuò)解決方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-04-04
Java日常練習(xí)題,每天進(jìn)步一點(diǎn)點(diǎn)(58)
下面小編就為大家?guī)硪黄狫ava基礎(chǔ)的幾道練習(xí)題(分享)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧,希望可以幫到你2021-08-08

