文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

如何在java项目中利用IO流对数组进行排序

2023-06-06 12:24

关注

这篇文章主要为大家详细介绍了如何在java项目中利用IO流对数组进行排序,文中示例代码介绍的非常详细,具有一定的参考价值,发现的小伙伴们可以参考一下:

排序思路

(1)从字符输入流中读取文本,缓冲各个字符,从而实现字符、数组和行的高效读取

(2)询问用户需要多少位数的数组

(3)转换为数字类型

(4)将用户输入数字存入数组

(5)把数组按排序需求并打印出来

2、实例

 public static void main(String[] args) { // TODO Auto-generated method stub try { //数组a()的数字个数,由用户输入决定 InputStreamReader isr=new InputStreamReader(System.in); //从字符输入流中读取文本,缓冲各个字符,从而实现字符、数组和行的高效读取 BufferedReader bfr=new BufferedReader(isr); //询问用户需要多少位数的数组 System.out.println("请输入需要多少位数的数组:\n"); String a1=bfr.readLine(); //将a1转换为数字类型 int i=Integer.parseInt(a1); //提示用户输入数组数据 System.out.println("请向数组中存入"+i+"个数据:\n"); //将用户输入数字存入数组 Integer[] a=new Integer[i]; for(int j=0;j<i;j++){ System.out.println("第"+(j+1)+"个:"); a[j]=new Integer(bfr.readLine()); } //把数组按升序排序并打印出来 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; } } } //输出排序后的数组 System.out.println("排序后\n"); for(int t=0;t<=i;t++){ System.out.println(a[t]); }  } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } } }

实例扩展:

键盘录入5个学生信息(姓名,语文成绩,数学成绩,英语成绩),按照总分从高到低存入文本文件。

代码:

public class TreeSetDemo {  public static void main(String[] args) throws IOException{    //创建TreeSet对象,用接口匿名内部类的方式实现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);      //次要排序条件,当总成绩相同时按学生姓名内容比较      int num2=(num1==0)?s2.getName().length()-s1.getName().length():num1;        return num2;      }        });    //键盘录入学生信息    System.out.println("请输入学生信息:");    for(int x=1;x<6;x++) {      Scanner sc=new Scanner(System.in);      System.out.print("请输入第"+x+"名学生的姓名:");      String name=sc.nextLine();      System.out.print("请输入第"+x+"名学生的语文成绩:");      int chineseScore=sc.nextInt();      System.out.print("请输入第"+x+"名学生的数学成绩:");      int mathScore=sc.nextInt();      System.out.print("请输入第"+x+"名学生的英语成绩:");      int englishScore=sc.nextInt();      //将录入的学生信息封装到学生对象里      Student s=new Student();      s.setName(name);      s.setChineseScore(chineseScore);      s.setMathScore(mathScore);      s.setEnglishScore(englishScore);      //把学生对象添加到集合中      ts.add(s);    }    //创建字符缓冲输出流对象    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();    }    //关闭流,释放资源    bw.close();  }}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程网。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯