首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

VBScript 輸入兩數相加陷阱與 Java 文件讀取基礎示例

     編輯:Java 相關知識

前言:一個經典的 VBScript 面試題

dim a, b, c
a = inputbox("a", "please input")
b = inputbox("b", "please input")
c = a + b
msgbox(c)

輸入 1 和 1,彈窗顯示 11 而非 2。

根因分析

  • InputBox 返回 字符串子類型 (Variant/String)
  • VBS 中 + 運算符重載:雙方均為數值 → 加法;雙方均為字符串 → 拼接;一數一字 → 加法(字符串轉數值)
  • 此處兩字符串相加,觸發字符串拼接

三種修正方案對比

方案代碼原理缺陷
CInt 強制轉換c = CInt(a) + CInt(b)四捨五入轉整數 (0.5→偶數)輸入小數會四捨五入,非精確加法
Int 截取整數a = Int(inputbox(...))向下取整 (負數向更負)同樣丟失小數部分
隱式類型轉換技巧c = 0 + a + b0 + 字符串 觸發數值加法語境✅ 保留小數精度,最通用

推薦寫法(含輸入驗證)

Dim a, b, c
a = InputBox("a", "please input")
b = InputBox("b", "please input")

If IsNumeric(a) And IsNumeric(b) Then
    c = 0 + a + b  ' 或 CDbl(a) + CDbl(b) 顯式轉雙精度
    MsgBox c
Else
    MsgBox "請輸入有效數字!"
End If

Java 文件讀取基礎示例(補充主題)

原文標題為「簡單的 Java 讀取文件示例」,以下提供現代 Java (NIO.2) 最佳實踐:

1. 一次性讀取小文件 (Java 11+)

// 返回字符串 (默認 UTF-8)
String content = Files.readString(Path.of("data.txt"));

// 返回行列表
List<String> lines = Files.readAllLines(Path.of("data.txt"));

2. 大文件逐行流式處理 (Java 8+)

try (Stream<String> stream = Files.lines(Path.of("big.log"))) {
    stream.filter(line -> line.contains("ERROR"))
          .forEach(System.out::println);
}

3. 緩衝字符讀取器 (傳統兼容)

try (BufferedReader br = Files.newBufferedReader(Path.of("config.properties"))) {
    String line;
    while ((line = br.readLine()) != null) {
        // 處理每行
    }
}

4. 二進制文件讀取

byte[] data = Files.readAllBytes(Path.of("image.png")); // 小文件
// 或流式
try (InputStream is = Files.newInputStream(Path.of("large.dat"))) {
    byte[] buffer = new byte[8192];
    int len;
    while ((len = is.read(buffer)) != -1) {
        // 處理 buffer[0..len-1]
    }
}

關鍵最佳實踐總結

  1. 優先使用 NIO.2 (Files/Paths):API 簡潔、自動資源管理、支援流式處理
  2. 大文件必須流式讀取:避免 OOM,Files.lines() 返回 Stream 實現惰性讀取
  3. 明確指定編碼:Files.newBufferedReader(path, StandardCharsets.UTF_8)
  4. try-with-resources:確保流關閉,Java 7+ 強制要求
  5. 異常處理:捕獲 IOException,區分文件不存在、權限不足、磁盤錯誤

總結

VBScript 的 + 運算符語境敏感特性是動態語言常見陷阱,0 + str 技巧 可優雅解決。Java 文件讀取已全面進入 NIO.2 時代,掌握 Files.readString、Files.lines、BufferedReader 三大模式即可覆蓋 99% 場景。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved