Wyrzucanie błędu przy obsłudze wyjątków

0

Witam,
Mam problem, ponieważ nie wiem dlaczego wyrzuca mi następujące błędy:

 Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: empty String
	at sun.misc.FloatingDecimal.readJavaFormatString(Unknown Source)
	at sun.misc.FloatingDecimal.parseDouble(Unknown Source)
	at java.lang.Double.parseDouble(Unknown Source)
	at game.Highscore.readToArray(Highscore.java:41)
	at game.Highscore.<init>(Highscore.java:26)
	at menu.NewGame$Handler.actionPerformed(NewGame.java:102)
	at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
	at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
	at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
	at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
	at java.awt.Component.processMouseEvent(Unknown Source)
	at javax.swing.JComponent.processMouseEvent(Unknown Source)
	at java.awt.Component.processEvent(Unknown Source)
	at java.awt.Container.processEvent(Unknown Source)
	at java.awt.Component.dispatchEventImpl(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Window.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
	at java.awt.EventQueue.access$500(Unknown Source)
	at java.awt.EventQueue$3.run(Unknown Source)
	at java.awt.EventQueue$3.run(Unknown Source)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
	at java.awt.EventQueue$4.run(Unknown Source)
	at java.awt.EventQueue$4.run(Unknown Source)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
	at java.awt.EventQueue.dispatchEvent(Unknown Source)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.run(Unknown Source)

Co najważniejsze wszystko działa bez zarzutu dla klasy testowej, która sobie napisałem w innym projekcie.

package game;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.math.BigDecimal;
import java.util.Arrays;

public class Highscore  {

	double[] array= new double[11];
	String[] nicks = new String[11];
	double[] nposition = new double[11];
	String[] newnicks = new String[11];

	public Highscore(double resoult, String nick){
	
		BigDecimal b = new BigDecimal(resoult);
		 b = b.setScale(2, BigDecimal.ROUND_FLOOR);    //ustawienie setnych
		 resoult=Double.parseDouble(b.toString());
		 	
		readToArray();
		array[10]=resoult;
		nicks[10]=nick;
		modifyPosition();
		Arrays.sort(array);
		modifyFile();
	}

		void readToArray(){
		try{						//wczytanie z pliku do array
			int i=0;
			String line1=null;
			BufferedReader br1 = new BufferedReader(new FileReader("Highscore/Highscore.txt")); 
			 while ((line1 = br1.readLine()) != null)
			 {	 
				 array[i]=Double.parseDouble(line1);
				  i++;
			 }
			 br1.close();}
		catch (FileNotFoundException e) 
		 { 
			 System.out.println("Nie znaleziono pliku"); 
		 } 
		 catch (IOException e) {}
	
		
		try{					//wczytanie z pliku do nicks
			int i=0;
			String line=null;
			BufferedReader br2 = new BufferedReader(new FileReader("Highscore/Nicks.txt")); 
			 while ((line = br2.readLine()) != null)
			 {	 
				 nicks[i]=line;
				 i++; 
			 }
			 br2.close();
		}
		catch (FileNotFoundException e) 
		 { 
			 System.out.println("Nie znaleziono pliku"); 
		 } 
		 catch (IOException e) { } 	 	
		}
	
		void modifyPosition()
		{
			for(int i=0;i<11;++i)
				{
				nposition[i]=array[i];
		}
		}
		void modifyFile()
		{
			for(int i=0;i<11;++i)
			{
				for(int j=0;j<11;++j)
				{
					if(nposition[j]==array[i] )
						newnicks[i]=nicks[j];
						}
				System.out.println(newnicks[i]);
			}
			
			
			File nickfile = new File("Highscore/Nicks.txt");
			nickfile.delete();
			
			File file = new File("Highscore/Highscore.txt");
			file.delete();
			
			try{ 				//wpisywanie do pliku z wynikami
			File file1 = new File("Highscore/Highscore.txt");
		     BufferedWriter output = new BufferedWriter(new FileWriter(file1));
		     for (int i=0;i<10;++i)
		     { output.write(Double.toString(array[i]));
		     	output.newLine();}
		     output.close();
			}
			catch(FileNotFoundException e)
			{
				System.out.println("blad w modyfikacji");
			}
			catch (IOException e){}

									//wpisywanie do pliku z nickami
			try{
				File file2 = new File("Highscore/Nicks.txt");
			     BufferedWriter output = new BufferedWriter(new FileWriter(file2));
			     for (int i=0;i<10;++i)
			     { output.write(newnicks[i]);
			     	output.newLine();}
			     output.close();
				}
				catch(FileNotFoundException e)
				{
					System.out.println("blad w modyfikacji");
				}
				catch (IOException e){}
			
		}
}
 

Ścieżka oraz pliki są okej, sprawdzałem 10 razy, wywołuje identycznie jak dla klasy testowej

0

Wszystko wskazuje na to, że parsujesz pustego stringa. Masz tam dwa razy parsowanie Double'a więc sprawdź pod debugerem jaki jest string, ewentualnie, jeśli nie potrafisz to przed parsowaniem wypisz sobie stringa na ekran i zobacz co tam masz.

0

Wypisałem sobie co wpisuje do array i wszystko jest, ale nie wpisuje z pliku do tablicy stringów. Dziwne jest to, że identyczny kod z analogicznym wywołaniem działa w mojej klasie testowej.

1

W pliku Highscore/Highscore.txt masz pusty wiersz.

0

Dziękuje, 4razy sprawdzałem czy jest 10 pozycji i dopiero gdy ręcznie wpisałem od początku wszystkie zadziałało, wielkie dzięki!

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