国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Java程序設(shè)計:選實驗6 輸入輸出應(yīng)用

這篇具有很好參考價值的文章主要介紹了Java程序設(shè)計:選實驗6 輸入輸出應(yīng)用。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

(1) 編寫一個程序,如果文件Exercisel_01.txt 不存在,就創(chuàng)建一個名為Exercisel_01.txt 的文件。向這個文件追加新數(shù)據(jù)。使用文本I/O將20個隨機生成的整數(shù)寫入這個文件。文件中的整數(shù)用空格分隔。

package 選實驗6;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Random;

public class task1 {
	public static void main(String[] args)
	{
		String fileName = "Exercise_01.txt";
		
		//檢查文件是否存在,如果不存在則創(chuàng)建
		File file = new File(fileName);
		try {
			if(!file.exists()) {
				file.createNewFile();
				System.out.println(fileName+"已創(chuàng)建。");
			}
			//寫入20個隨機數(shù)字
			BufferedWriter writer = new BufferedWriter(new FileWriter(fileName,true));
			Random random = new Random();
			for(int i=0;i<20;i++)
			{
				int num = random.nextInt();
				//每個整數(shù)之間用空格隔開
				writer.write(Integer.toString(num)+" ");
			}
			//關(guān)閉BufferWriter,確保資源被釋放
			writer.newLine();
			writer.close();
			System.out.println(fileName+"已被寫入數(shù)據(jù)。");
			
			//打開文件并讀取內(nèi)容和打印內(nèi)容
			BufferedReader reader = new BufferedReader(new FileReader(file));
			String lineString;
			System.out.println(fileName+"里面的內(nèi)容為:");
			while((lineString = reader.readLine())!=null) 
			{
				System.out.println(lineString);
			}
			reader.close();
			
		}
		catch(IOException e) {
			e.printStackTrace();
		}
		//刪除文件,以便能夠多次運行
		if (file.delete()) {
            System.out.println(fileName+"已刪除。" );
        } else {
            System.out.println(fileName+"無法刪除");
        }
	}
}

(2) 編寫一個程序,如果文件Exercisel_02.dat 不存在,就創(chuàng)建一個名為Exercisel_02.dat 的文件。向這個文件追加新數(shù)據(jù)。使用二進制I/O 將20個隨機生成的整數(shù)寫入這個文件中。利用二進制I/O讀取這個文件中的內(nèi)容并顯示。

package 選實驗6;

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Random;

public class task2 {
	public static void main(String[] args) {
		String fileName = "Exercisel_02.dat";
		
		//檢查文件是否存在,如果不存在則創(chuàng)建
		File file = new File(fileName);
		try {
			if(!file.exists())
			{
				file.createNewFile();
				System.out.println(fileName+"已創(chuàng)建。");
			}
			//寫入20個隨機數(shù)字
			DataOutputStream dataOutputStream = new DataOutputStream(new FileOutputStream(fileName,true));
			Random random = new Random();
			for(int i=0;i<20;i++)
			{
				int num = random.nextInt();
				//每個整數(shù)之間用空格隔開
				dataOutputStream.writeInt(num);
			}
			//關(guān)閉DataOutputStream,確保資源被釋放
			dataOutputStream.close();
			System.out.println(fileName+"已被寫入數(shù)據(jù)。");
			
			//打開文件并讀取內(nèi)容和打印內(nèi)容
			DataInputStream dataInputStream = new DataInputStream(new FileInputStream(fileName));
			System.out.println(fileName+"里面的內(nèi)容為:");
			while(dataInputStream.available()>0)
			{
				int num = dataInputStream.readInt();
				System.out.print(num+" ");
			}
			System.out.println();
			dataInputStream.close();
		}
		catch (IOException e) {
			e.printStackTrace();
		}
		//刪除文件,以便能夠多次運行
		if (file.delete()) {
            System.out.println(fileName+"已刪除。" );
        } else {
            System.out.println(fileName+"無法刪除");
        }
	}
}

(3) 對一個學(xué)生成績單進行讀寫操作。請直接下載blackboard上提供的data.txt文件作為數(shù)據(jù)源。具體要求如下:

  1. 新建一個可序列化的Student類,其中包括四個成員變量:int型學(xué)號、String類型學(xué)生名字、String類型學(xué)生所在學(xué)院、int型成績(參考data.txt文件)。重寫toString方法用于打印Student對象。
  2. 使用BufferedReader從data.txt文件中讀取數(shù)據(jù),并存放到一個集合對象中,要求按照學(xué)生名字的字母順序升序排列。
  3. 創(chuàng)建一個本地文件output.txt,將集合中的數(shù)據(jù)序列化到此文件中。(10分)

將output.txt中的數(shù)據(jù)反序列化,按照降序輸出所有成績在92分以上的學(xué)生信息;如果學(xué)生成績相同,則按照學(xué)生名字的字母順序降序輸出。文章來源地址http://www.zghlxwxcb.cn/news/detail-805023.html

package 選實驗6;

import java.io.*;
import java.util.*;

// 新建一個可序列化的Student類
// 實現(xiàn)Serializable 接口,用于可序列化類
// 實現(xiàn)Comparable接口,用于排序
class Student implements Serializable,Comparable<Student>{
	// 保證在對象序列化和反序列化過程中確保版本一致性
	private static final long serialVersionUID = 1L;
	private int studentId;
    private String studentName;
    private String college;
    private int grade;
    
    // 構(gòu)造方法,用于創(chuàng)建Student對象
    public Student(int studentId, String studentName, String college, int grade) {
        this.studentId = studentId;
        this.studentName = studentName;
        this.college = college;
        this.grade = grade;
    }
    
    // 重寫toString方法,用于打印Student對象信息
    @Override
    public String toString() {
    	String res;
        res = "學(xué)生{" +
                "學(xué)號:" + studentId +
                "; 名字:" + studentName +  
                "; 學(xué)院:" + college + 
                "; 成績:" + grade +
                '}';
        return res;
    }
    
    // 實現(xiàn)Comparable接口的compareTo方法,用于按學(xué)生名字升序排列
     @Override
     public int compareTo(Student one) {
        return this.studentName.compareTo(one.studentName);
     }
    
    // 用于(d)問題得到成績
    public int getGrade() {
    	return grade;
    }
    
    // 用于(d)問題得到學(xué)生的姓名
    public String getStudentName() {
    	return studentName;
    }
}
// 主類task3
public class task3 {

	public static void main(String[] args) {
		// 數(shù)據(jù)文件名
		String fileName = "data.txt";
		
		// 從文件讀取數(shù)據(jù),并存到集合對象studentList中
		List<Student> students = readStudentToList(fileName);
		
		// 按學(xué)生名字升序排列
        Collections.sort(students);
        
        // 打印排序后的學(xué)生信息
        // for (Student student : students) {
        //    System.out.println(student);
        //}
        
        String fileName1 = "output.txt";
        //檢查文件是否存在,如果不存在則創(chuàng)建
  		File file = new File(fileName1);
  		try {
  			if(!file.exists())
  			{
  				file.createNewFile();
  				System.out.println(fileName1+"已創(chuàng)建。");
  			}
  		}
  		catch (IOException e) {
  			e.printStackTrace();
  		}
  		
  		// 序列化數(shù)據(jù)到output.txt
  		serialize(students,fileName1);
  		
  		// 反序列化數(shù)據(jù)
  		List<Student> students1 = deserialize(fileName1);
  		
  		// 輸出成績在92分以上的學(xué)生
  		show92up(students1); 		
  		
  	    //刪除文件,以便能夠多次運行
		if (file.delete()) {
	          System.out.println(fileName1+"已刪除。" );
	      } else {
	          System.out.println(fileName1+"無法刪除");
	      }
	}
    
	// 從文件中讀取數(shù)據(jù),返回一個包含Student對象的List
	private static List<Student> readStudentToList(String fileName){
		// 用于返回List的臨時變量
		List<Student> tempList = new ArrayList<>();
		
		try(BufferedReader reader = new BufferedReader(new FileReader(fileName))){
			String lineString;
			//逐行讀取文件內(nèi)容
			while((lineString = reader.readLine())!=null) {
				// 拆分獲取每個學(xué)生的具體信息
				String[] strings = lineString.split(" ");
				// 獲取后創(chuàng)建Student對象
				Student temp = new Student(Integer.parseInt(strings[0]),
						strings[1], strings[2], Integer.parseInt(strings[3]));
				// 將創(chuàng)建后的對象加入List中
				tempList.add(temp);
			}
		}
		catch(IOException e) {
			e.printStackTrace();
		}
		// 返回包含Student對象的List
		return tempList;
	}
	
	// 序列化集合中的數(shù)據(jù)到output.txt中
	private static void serialize(List<Student> temp,String fn) {
		// 在這里是 ObjectOutputStream)會在代碼塊結(jié)束時自動關(guān)閉,不需要顯式調(diào)用 close() 方法來釋放資源
		try(ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(fn))){
			oos.writeObject(temp);
		}catch (IOException e) {
            e.printStackTrace();
        }
	}
	
	// 將output.txt中的數(shù)據(jù)反序列化
	private static List<Student>deserialize(String fn){
		// 用于返回包含Student的List
		List<Student> tempList = new ArrayList<>();		
		// 將反序列化后的對象轉(zhuǎn)換為 List<Student>
		try (ObjectInputStream ois = new ObjectInputStream(new FileInputStream(fn))) {
			Object object = ois.readObject();
			
			//判斷 object 是否是 List 類型
			if(object instanceof List<?>) {
				//將 object 強制轉(zhuǎn)換為 List 類型,可以逐個遍歷其中的元素
				List<?> unkown = (List<?>) object;			
				// 遍歷List中是否為Student類
				for(Object i : unkown) {
					// 如果是就加入List(強制轉(zhuǎn)換以保證一定為Student類)
					if(i instanceof Student) {
						tempList.add((Student)i);
					}else {
						System.err.println("列表里有不是學(xué)生的元素!");
					}
				}
			}else {
				System.err.println("這不是我們想要的列表!");
			}
		}catch (IOException | ClassNotFoundException e) {
            e.printStackTrace();
        }
        // 返回包含學(xué)生的List
		return tempList;
	}
	
	// 按照規(guī)定輸出成績在92分以上的學(xué)生信息
	private static void show92up(List<Student>temp){
		temp.stream()// 將集合轉(zhuǎn)換為流
		// 過濾操作,保留成績大于92的學(xué)生
		.filter(t->t.getGrade()>92)
		// 排序操作,首先按照學(xué)生成績降序排序,然后按照學(xué)生名字的字母順序升序排序
        // 使用 Comparator.comparing 方法,通過方法引用指定按照哪個屬性進行比較
		.sorted(Comparator.comparing(Student::getGrade).reversed().
				thenComparing(Student::getStudentName))
		// 遍歷操作,將每個學(xué)生信息打印到控制臺
		.forEach(System.out::println);
	}
}

到了這里,關(guān)于Java程序設(shè)計:選實驗6 輸入輸出應(yīng)用的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • Java程序設(shè)計實驗——實驗6

    Spraing※boy 在本次實驗中,加入了實驗中可能遇到的知識點的總結(jié)提示和相關(guān)知識點的學(xué)習(xí)鏈接,個人覺得這次實驗在java中的應(yīng)用還是非常廣泛的,在項目的開發(fā)中會經(jīng)常用到,希望各位友友們能通過這篇博客真正學(xué)到一些東西??。 附上:java學(xué)習(xí)筆記 1、將下列數(shù)據(jù):“

    2024年02月03日
    瀏覽(25)
  • 4、MATLAB程序設(shè)計與應(yīng)用劉衛(wèi)國(第三版)課后實驗四:選擇結(jié)構(gòu)程序設(shè)計

    4、MATLAB程序設(shè)計與應(yīng)用劉衛(wèi)國(第三版)課后實驗四:選擇結(jié)構(gòu)程序設(shè)計

    目錄 ?一、 ?二、 ?三、 ?四、 ?五、 求分段函數(shù)的值 ? 用 if語句實現(xiàn),分別輸出X=-5.0,-3.0,1.0,2.0,2.5,3.0,5.0時的y值。 ------------- -------- ------------ ------ 示例代碼 - -------------------------- ------------------ ------------- -------- ------------ ------ 運行結(jié)果 - -------------------------- --------

    2024年02月05日
    瀏覽(23)
  • 5、MATLAB程序設(shè)計與應(yīng)用劉衛(wèi)國(第三版)課后實驗五:循環(huán)結(jié)構(gòu)程序設(shè)計

    5、MATLAB程序設(shè)計與應(yīng)用劉衛(wèi)國(第三版)課后實驗五:循環(huán)結(jié)構(gòu)程序設(shè)計

    目錄 一、 ?二、 ?三、 ?四、 ?五、 已知 求 y的近似值。當(dāng)n分別取100、1 000、10 000時,結(jié)果是多少? 要求 :分別用循環(huán)結(jié)構(gòu)和向量運算(使用sum 函數(shù))來實現(xiàn)。 --------------------------------------- 示例代碼 --------------------------------------------- --------------------------------------- 運行結(jié)果

    2023年04月26日
    瀏覽(22)
  • 3、MATLAB程序設(shè)計與應(yīng)用劉衛(wèi)國(第三版)課后實驗三:順序結(jié)構(gòu)程序設(shè)計

    3、MATLAB程序設(shè)計與應(yīng)用劉衛(wèi)國(第三版)課后實驗三:順序結(jié)構(gòu)程序設(shè)計

    目錄 一、 ?二、 ?三、 ?四、 ?五、 ?六、 從鍵盤輸入一個4位整數(shù),按如下規(guī)則加密后輸出。加密規(guī)則:每位數(shù)字都加上7,然后用和除以10的余數(shù)取代該數(shù)字;然后將第一位數(shù)與第三位數(shù)互換,第二位數(shù)與第四位數(shù)互換。 ------------- -------- ------------ ------ 示例代碼 ---------------

    2024年02月03日
    瀏覽(26)
  • Java程序設(shè)計-實驗五 Java多線程程序設(shè)計

    1. 掌握Runnable接口實現(xiàn)多線程的方法 2. 掌握Thread類實現(xiàn)多線程的用法 3. 掌握J(rèn)ava語言中多線程編程的基本方法 要求:編寫一個應(yīng)用程序,除了主線程外,還有三個線程:first、second和third。 first負責(zé)模擬一個紅色的按鈕從坐標(biāo)(10,60)運動到(100,60); second負責(zé)模擬一

    2024年02月03日
    瀏覽(29)
  • 【Java高級程序設(shè)計】注解實驗

    【Java高級程序設(shè)計】注解實驗

    @Label注解: person類: ?PersonAction接口: PersonInput類,負責(zé)提示錄入人員的相關(guān)屬性,提示必須是注解@Label所標(biāo)注的中文名稱。 PersonDisplay,負責(zé)顯示人員信息,顯示時的屬性名稱必須為注解@Label所標(biāo)注的中文名稱 測試類: 運行結(jié)果: @Column注解 Person類: MySqlDAO類: CreateSQL類

    2024年02月07日
    瀏覽(29)
  • Java程序設(shè)計入門教程--控制臺輸入數(shù)據(jù)

    控制臺輸入數(shù)據(jù)常用類 Scanner類 ?????? 在 很多情況下,我們需要 Java 程序能夠?qū)ξ覀冎付ǖ闹颠M行計算,這樣的話就需要我們的 Java 程序能夠讀取我們所輸入的值。我們可以使用 Java 自帶的 Scanner 類來從控制臺獲取 輸入 。 ?????? Scanner 類在包 java.util 里。我們一般在程

    2024年02月07日
    瀏覽(34)
  • Java面向?qū)ο蟪绦蛟O(shè)計實驗報告(實驗五 接口的練習(xí))

    Java面向?qū)ο蟪绦蛟O(shè)計實驗報告(實驗五 接口的練習(xí))

    ? 作者:命運之光? ? 專欄: Java面向?qū)ο蟪绦蛟O(shè)計實驗報告 ? 目錄 ?一、需求設(shè)計 ?二、概要設(shè)計 ?三、詳細設(shè)計 ?四、調(diào)試結(jié)果 ?五、測試結(jié)果 ?附錄:源程序代碼(帶注釋) demo5類 Instrument類 Piano類 play類 Student類 Teacher類 Violin類 work類? 實驗五?接口的練習(xí) 實驗

    2024年02月06日
    瀏覽(24)
  • Java面向?qū)ο蟪绦蛟O(shè)計實驗報告(實驗二 面向?qū)ο蠡A(chǔ)練習(xí))

    Java面向?qū)ο蟪绦蛟O(shè)計實驗報告(實驗二 面向?qū)ο蠡A(chǔ)練習(xí))

    ?? 作者: 命運之光? ?? 專欄:Java面向?qū)ο蟪绦蛟O(shè)計實驗報告 目錄 ?一、需求設(shè)計 ?二、概要設(shè)計 ?三、詳細設(shè)計 ?四、調(diào)試結(jié)果 ?五、測試結(jié)果 ?附錄:源程序代碼(帶注釋) 測試類demo2 Address類 Employee類 實驗二?面向?qū)ο蠡A(chǔ)練習(xí) 實驗環(huán)境: Eclipse+JDK 實驗?zāi)康模?/p>

    2024年02月06日
    瀏覽(31)
  • 實驗六 Java流式編程與網(wǎng)絡(luò)程序設(shè)計

    Client Server ClientPlus ServerPlus ReceiveThread 本關(guān)任務(wù):編寫應(yīng)用程序(SortArray.java),使用字節(jié)輸入/輸出流實現(xiàn)數(shù)據(jù)的保存和讀取。 Java 流功能相關(guān)的類都封裝在 java.io包中,所以要使用流類,必須導(dǎo)入java.io包。數(shù)據(jù)流是 Java 進行 I/O 操作的對象,它按照不同的標(biāo)準(zhǔn)可以分為不同的

    2024年02月03日
    瀏覽(27)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包