java - 我无法将字符串转换为整数(来自 csv 文件)-输入字符串 : "4" 错误

标签 java string csv

在 Android studio 中 - Java

我走了不同的路,但我没能把 String 变成 Int。我有一个 csv 文件,我读取了它的值。但我无法将 id 列转换为 int。

private void getCSVData(){
        inputStream = getResources().openRawResource(R.raw.book);
        BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
        try {
            String csvLine;
            ArrayList<String> name = new ArrayList<String>();
            ArrayList<String> type = new ArrayList<String>();
            ArrayList<Integer> price = new ArrayList<Integer>();
            ArrayList<Integer> bookId = new ArrayList<String>();
            while ((csvLine = reader.readLine()) != null){
                String[] values = csvLine.split(",");
                bookId.add(Integer.parseInt(values[0].trim()));
                name.add(values[1]);
                type.add(values[2]);
                price.add(Integer.parseInt(values[3].trim()));
            }

            comparison(name, type, price, bookId);
        }
        catch (IOException e) {
            e.printStackTrace();
        }
}

我使用.getChars()并获得十进制代码:65279。它没有等效的Ascii代码。我意识到只有所有数据中的第一个字符有这个问题。后续记录没有问题

An image of debug console

最佳答案

我认为输入字符串中有双引号 " 或其他类似的字符。 我猜这一定是问题所在。

values[0].trim().replace("\"", "")

====================编辑============================

从问题描述中的日志来看,它似乎不是一个正常的双引号,我检查了字符,它似乎有 ASCII 值 8220 和 8221。所以你可以做的简单方法是,

values[0].trim().replace("“", "");
values[0].trim().replace("”", "");

您还可以更通用地删除所有非数字字符,

        StringBuilder builder = new StringBuilder();
        for (int i = 0; i < values[0].length(); i++) {
            char c = values[0].charAt(i);
            if(c > 47 && c < 58){
                builder.append(c);
            }
        }

这只是一个原始解决方案,您可以使用流来更优雅地完成它,如果您愿意,我将这部分留给您。

希望对你有帮助

关于java - 我无法将字符串转换为整数(来自 csv 文件)-输入字符串 : "4" 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61134610/

相关文章:

java - 在Swing中设置JComboBox的背景

c - 我的程序在某些情况下似乎无法分隔单词

python - 删除字符串的特定部分

java - 如何保留 Spring MVC 表单支持对象的值?

java - Spring webflux : how to publish event from sync call for async processing?

javascript - 为什么我的 CSV 没有写入任何数据?

python - Pandas - 其他每个值的列的最小值

Java 在忽略撇号的同时对列表进行排序

java - 使用 esapi 验证 Web 表单中的输入文本

c - 函数中的操作数组 - c - 段错误