MST

星途 面试题库

面试题:Java中StringTokenizer在简单CSV数据解析的应用

假设有一个CSV格式的字符串,格式为'name,age,gender',例如'John,25,Male',请使用StringTokenizer实现将该字符串解析为对应的姓名、年龄和性别,并打印出来。阐述在解析过程中可能会遇到的问题以及如何解决。
24.3万 热度难度
编程语言Java

知识考点

AI 面试

面试题答案

一键面试

代码实现

import java.util.StringTokenizer;

public class CSVParser {
    public static void main(String[] args) {
        String csvString = "John,25,Male";
        StringTokenizer tokenizer = new StringTokenizer(csvString, ",");

        if (tokenizer.countTokens() == 3) {
            String name = tokenizer.nextToken();
            String ageStr = tokenizer.nextToken();
            String gender = tokenizer.nextToken();

            try {
                int age = Integer.parseInt(ageStr);
                System.out.println("姓名: " + name);
                System.out.println("年龄: " + age);
                System.out.println("性别: " + gender);
            } catch (NumberFormatException e) {
                System.out.println("年龄解析错误: " + e.getMessage());
            }
        } else {
            System.out.println("CSV字符串格式错误,预期3个字段,实际 " + tokenizer.countTokens() + " 个。");
        }
    }
}

解析过程中可能遇到的问题及解决办法

  1. 字段数量不符合预期
    • 问题:CSV字符串可能不包含正好3个字段,例如'John,25'或'John,25,Male,Other'。
    • 解决办法:在解析前,通过StringTokenizer.countTokens()方法获取字段数量,确保字段数量为3。如果不是3个字段,打印错误信息提示格式有误。
  2. 年龄解析错误
    • 问题:年龄字段可能不是有效的整数,例如'John,twenty - five,Male'。
    • 解决办法:使用Integer.parseInt()方法将年龄字符串转换为整数时,放在try - catch块中捕获NumberFormatException异常,若解析失败,打印错误信息。
  3. 分隔符不一致
    • 问题:CSV字符串的分隔符可能不是逗号,例如'John;25;Male'。
    • 解决办法:在创建StringTokenizer对象时,将正确的分隔符作为参数传入。如果分隔符可能变化,可以在程序中通过配置或用户输入来动态获取分隔符。