Проблема с синтаксическим анализом первого элемента массива из файла CSV, прочитанного из входного потока

  1. Файл читается из CSV. Ok
  2. Строка разделяется точкой с запятой. Ok
  3. анализ первой строки массива возвращает NumberformatException. Ошибка<

То, что я уже пробовал:

  1. Целое.Значение (стр.);
  2. Integer.parseInt (строка);
  3. pp = новое целое число (str);

Может ли кто-нибудь помочь с этой проблемой? Благодарность

public static void main(String[] args) throws FileNotFoundException, IOException {

    File inputF = new File("C:\\chatse\\Estatistica\\dados.csv");
    InputStream inputFS = new FileInputStream(inputF);

    BufferedReader in = new BufferedReader(new InputStreamReader(inputFS));
    String line;
    String readFromCsv = "";

    while ((line = in.readLine()) != null) {
        readFromCsv += line + ";";
    }

    in.close();

    String read = readFromCsv.trim();

    String[] n = read.split(";");

    ArrayList<String> lista = new ArrayList<>();

    for (String st : n) {
           lista.add(st);

    }
    ArrayList<Integer> nlistNum = new ArrayList<>();

    for (String data : lista) {

        int pp Integer.Valueof(data); //tried this,
        int pp Integer.parseInt(data); // this,
        int pp = new Integer(data); // and this.

        nlistNum.add(pp);
    }

person Luiz Henrique Silva    schedule 08.12.2019    source источник
comment
Пожалуйста, добавьте данные из файла CSV. Нужно проверить эти   -  person Unknown    schedule 09.12.2019
comment
Ваш файл данных CSV может содержать нечисловые значения.   -  person Unknown    schedule 09.12.2019
comment
Обычно файл CSV содержит строки данных, разделенных запятыми (или другими символами). Он также может содержать строку заголовка в качестве первой строки файла, описывающей имена столбцов данных. Вы читаете свой CSV-файл в одну строковую переменную. Это то, к чему вы стремитесь, или файл CSV содержит один столбец с числами? Невозможно узнать, если вы не предоставите частичный пример того, как данные содержатся в файле. Имейте в виду, что метод Integer.parseInt () может обрабатывать только строковое представление чисел Integer (не разрешены альфа-символы, кроме префикса - или +).   -  person DevilsHnd    schedule 09.12.2019
comment
Привет всем, на самом деле проблема заключалась в том, что первый индекс моего массива имел ascii 65279, поэтому я понял это, попытавшись разделить этот индекс в массиве символов и получить его длину. Может быть, мне нужно объявить этот пост как решенный, но я сделал еще не знаю как, это мой первый пост   -  person Luiz Henrique Silva    schedule 09.12.2019


Ответы (1)


проблема заключалась в том, что первый индекс моего массива имел «ascii 65279», поэтому я понял это, разделив этот индекс в массиве символов и получив его длину.

n = readFromCsv.split(";");

for (String st : n) {

    char[] charr = st.toCharArray();
    String str = "";
    StringBuilder sb = new StringBuilder();

    for (char c : charr) {
        int asci = (int) c;
        //this verify if it is in the range of number
        if (asci >= 48 && asci <= 57) {
            sb.append(c);
        }
    }
    str = sb.toString();
    int novoInt = Integer.valueOf(str);
    nlistNum.add(novoInt);
}
person Luiz Henrique Silva    schedule 09.12.2019