豆包編寫Java程序小試

今天下載了一本第四版電氣工程師手冊,非常棒的一本書,在給PDF添加目錄的時候,由于目錄有將近60頁,使用老馬開發的PdgCntEditor有點卡頓,不過補充下,老馬這個PdgCntEditor還是非常好的。

所以我決定用Java編一個小程序來對目錄文件進行縮進處理,然后再導入到PdgCntEditor中進行保存。

之前還沒試過用AI編寫程序,就采用豆包進行了一個程序測試。

輸入指令如下:

作為一名java程序員,請你設計一段java程序,逐行讀入文本,若讀入的行的行首包含制表符,則去除行首制表符,然后當該行的開頭字符為數字,且前三個字符未包含符號“.”,則在行首增加兩個制表符,若包含有符號“.”,則在行首增加一個制表符。并將文本進行保存。

豆包自動生成了一個程序,結果輸入的文本是中文,輸出的是亂碼。豆包又增加了通過指定StandardCharsets.UTF_8,結果FileReader沒有 new FileReader(String, StandardCharsets.UTF_8))方法,提交該問題后,豆包又進行了優化。

優化后的程序非常好用,而且編寫規范。以下是豆包寫的程序:

import java.io.*;
import java.nio.charset.StandardCharsets;
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;public class TextProcessor {// 匹配行尾的數字(整數或小數)private static final Pattern NUMBER_PATTERN = Pattern.compile("(\\d+(\\.\\d+)?)\\s*$");public static void main(String[] args) {Scanner scanner = new Scanner(System.in);//        System.out.print("請輸入源文件路徑:");
//        String sourcePath = scanner.nextLine();
//
//        System.out.print("請輸入目標文件路徑:");
//        String targetPath = scanner.nextLine();String sourcePath = "E:\\input.txt";String targetPath = "E:\\output.txt";try {processTextFile(sourcePath, targetPath);System.out.println("文件處理完成,已保存至:" + targetPath);} catch (IOException e) {System.err.println("文件處理出錯:" + e.getMessage());} finally {scanner.close();}}private static void processTextFile(String sourcePath, String targetPath) throws IOException {try (BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(sourcePath), StandardCharsets.UTF_8));BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(targetPath), StandardCharsets.UTF_8))) {String line;while ((line = reader.readLine()) != null) {String processedLine = processSingleLine(line);writer.write(processedLine);writer.newLine();}}}private static String processSingleLine(String line) {if (line.isEmpty()) {return line;}// 第一步:去除行首所有制表符String lineWithoutLeadingTabs = line.replaceAll("^\\t+", "");if (lineWithoutLeadingTabs.isEmpty()) {return lineWithoutLeadingTabs;}// 第二步:處理行首數字邏輯(添加制表符)String lineWithTabs = addLeadingTabs(lineWithoutLeadingTabs);// 第三步:提取行尾數字并加70return processTrailingNumber(lineWithTabs);}/*** 根據行首數字和"."的存在情況添加制表符*/private static String addLeadingTabs(String line) {char firstChar = line.charAt(0);if (Character.isDigit(firstChar)) {int endIndex = Math.min(3, line.length());String firstThreeChars = line.substring(0, endIndex);if (firstThreeChars.contains(".")) {return "\t" + line; // 包含".",添加1個制表符} else {return "\t\t" + line; // 不包含".",添加2個制表符}}return line;}/*** 提取行尾的數字部分并加70*/private static String processTrailingNumber(String line) {Matcher matcher = NUMBER_PATTERN.matcher(line);if (matcher.find()) {String numberStr = matcher.group(1);try {// 解析為double處理整數和小數double number = Double.parseDouble(numberStr);double newNumber = number + 68;// 格式化結果:整數保持整數形式,小數保留兩位String formattedNumber = (newNumber == Math.floor(newNumber))? String.format("%.0f", newNumber): String.format("%.2f", newNumber);// 替換行尾的數字部分return line.substring(0, matcher.start()) + formattedNumber;} catch (NumberFormatException e) {// 解析失敗時返回原始行(理論上不會發生,因為正則已匹配有效數字)return line;}}// 未找到行尾數字,直接返回原始行return line;}
}

以下是縮進好的文本,非常巴適。

另外,豆包還會將編程要求進行梳理,列出表格,非常巴適。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/88250.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/88250.shtml
英文地址,請注明出處:http://en.pswp.cn/web/88250.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

SpringBoot整合騰訊云新一代行為驗證碼

一 產品介紹 騰訊云官方介紹鏈接 騰訊云新一代行為驗證碼(Captcha),基于十道安全防護策略,為網頁、App、小程序開發者打造立體、全面的人機驗證。在保護注冊登錄、活動秒殺、點贊發帖、數據保護等各大場景下業務安全的同時&…

SenseGlove新一代外骨骼力反饋手套Rembrand來襲!亞毫米級手部動捕+指尖觸覺力采集+5Dof主動力反饋多模態

在遠程機器人操作領域,精準的觸覺感知與靈活的動作控制始終是核心需求。SenseGlove 新推出的 Rembrandt 力反饋外骨骼數據手套,以先進技術為支撐,為遠程操控人形機器人手部提供了無縫解決方案,讓操作更精準、更高效。值得一提的是…

Linux 信號機制:操作系統的“緊急電話”系統

想象一下,你正在電腦前專心工作,突然手機響了——這是一個通知,要求你立即處理一件新事情(比如接電話)。 Linux 系統中的信號(Signal)?? 機制,本質上就是操作系統內核或進程之間用…

論文略讀:Prefix-Tuning: Optimizing Continuous Prompts for Generation

2021 ACL固定預訓練LM,為LM添加可訓練,任務特定的前綴這樣就可以為不同任務保存不同的前綴這種前綴可以看成連續可微的soft prompt,相比于離散的token,更好優化,效果更好訓練的時候只需要更新prefix部分的參數&#xf…

CSS基礎選擇器、文本屬性、引入方式及Chorme調試工具

CSS基礎 1.1 CSS簡介 CSS 是層疊樣式表 ( Cascading Style Sheets ) 的簡稱. 有時我們也會稱之為 CSS 樣式表或級聯樣式表。 CSS 是也是一種標記語言 CSS 主要用于設置 HTML 頁面中的文本內容(字體、大小、對齊方式等)、圖片的外形(寬高、邊…

RabbitMQ 高級特性之事務

1. 簡介與 MySQL、Redis 一樣,RabbitMQ 也支持事務。事務中的消息,要么全都發送成功,要么全部發送失敗,不會出現一部分成功一部分失敗的情況。2. 使用事務發送消息spring 中使用 RabbitMQ 開啟事務需要兩步:第一步&…

iframe 的同源限制與反爬機制的沖突

一、事件背景A域名接入了動態防護(Bot 防護、反爬蟲機制),同時第三方業務B域名通過內嵌iframe的方式調用了A域名下的一個鏈接。二、動態防護介紹:動態防護(也稱為 Bot 防護、反爬蟲機制)是網站為了防止自動…

Rust 的 Copy 語義:深入淺出指南

在 Rust 中,Copy 是一個關鍵的特性,它定義了類型的復制行為。理解 Copy 語義對于掌握 Rust 的所有權系統和編寫高效代碼至關重要。一、核心概念:Copy vs Move特性Copy 類型非 Copy 類型 (Move)賦值行為按位復制 (bitwise copy)所有權轉移 (ow…

Qt的信號與槽(二)

Qt的信號與槽(二)1.自定義槽2.通過圖形化界面來生成自定義槽3.自定義信號3.信號和槽帶參數4.參數數量5.connect函數的設計🌟hello,各位讀者大大們你們好呀🌟🌟 🚀🚀系列專欄&#xf…

Java研學-MongoDB(三)

三 文檔相關 7 文檔統計查詢① 語法: // 精確統計文檔數 慢 準 dahuang> db.xiaohuang.countDocuments({條件}) 4 // 粗略統計文檔數 快 大致準 dahuang> db.xiaohuang.estimatedDocumentCount({條件}) 4② 例子: // 精確統計文檔數 name為奔波兒灞…

TCP協議格式與連接釋放

TCP報文段格式 TCP雖然是面向字節流的,但TCP傳送帶數據單元確是報文段。TCP報文段分為首部和數據段部分,而TCP的全部功能體現在它在首部中各字段的作用。因此,只有弄清TCP首部各字段的作用才能掌握TCP的工作原理。 TCP報文段首部的前20字節是…

CSS05:結構偽類選擇器和屬性選擇器

結構偽類選擇器 /*ul的第一個子元素*/ ul li:first-child{background: #0af6f6; }/*ul的最后一個子元素*/ ul li:last-child{background: #d27bf3; } /*選中p1:定位到父元素,選擇當前的第一個元素 選擇當前p元素的父級元素,選中父級元素的第…

使用策略模式 + 自動注冊機制來構建旅游點評系統的搜索模塊

? 目標: 搜索模塊支持不同內容類型(攻略、達人、游記等)每種搜索邏輯用一個策略類表示自動注冊(基于注解 Spring 容器)新增搜索類型時,只需添加一個類 一個注解,無需改工廠、注冊表等&#x…

第八十九篇 大數據開發中的數據算法:貪心策略 - 生活中的“精打細算”藝術

在資源有限的世界里,貪心算法教會我們:局部最優的累積,往往是通往全局最高效的捷徑。本文通過3個生活化場景原創圖表,揭示大數據開發中最實用的優化策略。目錄一、貪心算法核心思想:當下即最優二、三大核心應用場景詳解…

【論文閱讀】Dynamic Few-Shot Visual Learning without Forgetting

系統概述如下: (a) 一個基于卷積神經網絡(ConvNet)的識別模型,該模型包含特征提取器和分類器; (b) 一個少樣本分類權重生成器。這兩個組件都是在一組基礎類別上訓練的,我們為這些類別準備了大量訓練數據。在測試階段,權重生成器會接收少量新類別的訓練數據以及基礎類別的…

HTML應用指南:利用GET請求獲取全國山姆門店位置信息

山姆會員店作為全球知名的零售品牌,自進入中國市場以來,始終致力于為消費者提供高品質商品與便捷的購物體驗。隨著新零售業態的快速發展,門店位置信息的獲取變得愈發重要。品牌通過不斷拓展門店網絡,目前已覆蓋多個一、二線城市&a…

java ThreadLocal源碼分析

寫個demo測試下&#xff1a;private static void testThreadLocal() {ThreadLocal<Integer> threadLocal new ThreadLocal<>();new Thread(){Overridepublic void run() {threadLocal.set(9527);System.out.println("curr thread: " Thread.currentThr…

后端Web實戰(項目管理)

Restful風格 我們的案例是基于當前最為主流的前后端分離模式進行開發 在前后端分離的開發模式中&#xff0c;前后端開發人員都需要根據提前定義好的接口文檔&#xff0c;來進行前后端功能的開發。 后端開發人員&#xff1a;必須嚴格遵守提供的接口文檔進行后端功能開發&#…

Leetcode 3604. Minimum Time to Reach Destination in Directed Graph

Leetcode 3604. Minimum Time to Reach Destination in Directed Graph 1. 解題思路2. 代碼實現 題目鏈接&#xff1a;3604. Minimum Time to Reach Destination in Directed Graph 1. 解題思路 這一題思路上就是一個廣度優先遍歷&#xff0c;我們不斷考察當前時間點以及位置…

OpenXR Runtime切換工具-OpenXR-Runtime-Switcher

在開發VR時&#xff0c;有時有多個設備&#xff0c;大家可能也會選擇不同的串流工具&#xff0c;OpenXR類似于默認瀏覽器&#xff0c;如果設置錯誤可能導致游戲無法串流。 推薦一個工具&#xff0c;可以設置默認的OpenXR工具。 OpenXR-Runtime-Switcher 對于沒有的設備&#…