Джава ; невозможно преобразовать строковую матрицу в двойную матрицу: Errorjava.lang.NumberFormatException - PullRequest
0 голосов
/ 09 сентября 2018

Я пытался решить эту проблему 3 дня назад, но ничего не происходит. Я надеюсь, что вы можете найти решение:

После этого я делаю заявку на чтение текстового файла чисел, собираю данные в матрицу строк и для их работы мне нужно преобразовать их в двойную матрицу. но появляется ошибка:

Errorjava.lang.NumberFormatException: для входной строки: "0,95768412 0,770070937"

. Я пытался заменить запятую (.) на (.), но ничего не произошло.

Вот эскиз информации о файле:
0,620966467 0,397670717
0,144506398 0,86070719
0,344924707 0,49886148
0,568299164 0,407224505
0,55644466 0,580297755
0,940100947 0,920269925
0,45667026 0,253952562
0,046970841 0,04214613
0,548769197 0,114155205
0,220420195 0,035404045
0,804653981 0,371228693
0,688345818 0,575313752
0,54377148 0,891464466

я выложу код, чтобы вы могли увидеть программу.

try {

        BufferedReader br = new BufferedReader(new FileReader("src\\numerosAleatorios.txt"));

        //String matriz[][] = new String[99][1];
        double matriz[][] = new double[99][2];
        int numlineas = 0;
        while (((Linea = br.readLine()) != null)) {

            String a[] = Linea.split(" ");

            for (int i = 0; i < a.length; i++) {

                matriz[numlineas][i] = Double.parseDouble(a[i]);

            }

            numlineas++;
        }

        //double matrizDoble[][]= new double [99][1];
        System.out.println("MATRIZ");
        System.out.println("------------------------------");

        for (int filas = 0; filas < matriz.length; filas++) {
            for (int colum = 0; colum < matriz[filas].length; colum++) {
                //matrizDoble[filas][colum]= Double.valueOf(matriz[filas][colum]).doubleValue();

                System.out.print(matriz[filas][colum] + "\n");

            }  
        }



            System.out.println("\n Numero de parejas: "+numlineas);
    } catch (Exception ex) {
        System.out.println("Error"+ex);
    }

Спасибо за ответ.!

Ответы [ 3 ]

0 голосов
/ 09 сентября 2018

Я попробовал ваш код, заменив ',' на '.' и это прекрасно работает для меня.

enter image description here

enter image description here

String Linea;
try {

    BufferedReader br = new BufferedReader(new FileReader("src\\numerosAleatorios.txt"));

    // String matriz[][] = new String[99][1];
    double matriz[][] = new double[99][2];
    int numlineas = 0;
    while (((Linea = br.readLine()) != null)) {

        String a[] = Linea.split(" ");

        for (int i = 0; i < a.length; i++) {

            matriz[numlineas][i] = Double.parseDouble(a[i]);

        }

        numlineas++;
    }

    // double matrizDoble[][]= new double [99][1];
    System.out.println("MATRIZ");
    System.out.println("------------------------------");

    for (int filas = 0; filas < matriz.length; filas++) {
        for (int colum = 0; colum < matriz[filas].length; colum++) {

            System.out.print(matriz[filas][colum] + "\n");

        }
    }

    System.out.println("\n Numero de parejas: " + numlineas);
} catch (Exception ex) {
    System.out.println("Error" + ex);
}
0 голосов
/ 09 сентября 2018

1) Разделить вашу строку по пробелам:

String a[] = Linea.split("\\s+");

2) Заменить "," на "." :

matriz[numlineas][i] = Double.parseDouble(a[i].replace(",", "."));
0 голосов
/ 09 сентября 2018

Вы используете String.split () с пробелом; однако ваша трассировка стека показывает «табуляцию» между числами. В строке нет пробелов, поэтому она не разделяется. Затем он пытается сразу проанализировать оба числа в строке: «0.620966467 0.397670717», что не удается.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...