Wczytywanie dużej macierzy z pliku .txt do dwuwymiarowej tablicy

0

Witam! Piszę program, przeprowadzający test Shapiro-Wilka, na podanych danych. Jednym z wykonywanych działań jest przemnożenie otrzymanych wartości przez dane odczytane z tabeli. Tabelę tę mam w pliku .txt(załącznik) i próbuję wczytać do dwuwymiarowej tablicy double. Niestety, albo w komórkach(konkretnie 0,0) lądują całe wiersze zczytane z pliku albo

Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: For input string: "0,7071"

przy próbie wypisania tablicy w pętli.
Proszę o pomoc

  String line="";
             
	            Double[][] datas = new Double[k][w];
	            String[] tmp;
	           // String tmpp;
	            while (st.hasMoreTokens()) {
	 	           String tmpp  = st.nextToken();
	            	
	          
	         //l = line;
	        
	         tmp = line.split(" ");
	         //tmpp=line.trim();
	 
	        // System.out.println("Line:" + tmpp);
	                  
	          for (int i = 0; i<k;i++){  
	        	 
	        	  //System.out.println(t);
	        	 
	        	  for(int j=0; j<w; j++){
	        		  Double t= Double.parseDouble(tmpp);
	        		  datas[i][j]= t;
	        // System.out.println("Datas: "+ datas[i][j]);
	          // System.out.println("Datas: "+ datas[i][j]);
	 
	        	  }
	        	 
	          }
	          
	          }
	          System.out.println("Datas: "+ datas[0][2]);
	          }
	           
0

Jakiej liczbie odpowiadają znaki #?
Metoda parseDouble nie zadziała, ona wymaga kropki w charakterze separatora dziesiętnego.

0

Znam ilość liczb w pliku, ale możliwa jest jego edycja(tabela nie zawiera wszystkich możliwych wartości), ponadto w niektórych komórkach znajdują się znaki # - brak wartości, w niektórych przypadkach.

0

A co umieścić w tablicy w przypadku znaku #?

0

Właśnie ten znak albo null

0

# w tablicy liczbowej? Oryginalny pomysł.

            Scanner sc = new Scanner(new File("wspolczynniki.txt"));
            int rows = 50;
            int cols = 59;
            Double[][] data = new Double[rows][cols];
            sc.nextLine();
            int row = 0;
            while(sc.hasNextLine()){
                String line = sc.nextLine();
                String[] items = line.split("[ \t]");
                for(int col=1;col<items.length;col++){
                    if(!items[col].equals("#")){
                        data[row][col-1] = Double.parseDouble(items[col].replaceAll(",","."));
                    }
                    else{
                        data[row][col-1] = null;
                    }
                }
                row++;
            }
            sc.close();

1 użytkowników online, w tym zalogowanych: 0, gości: 1