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

2015-04-16 20:19
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

edytowany 2x, ostatnio: bogdans, 2015-04-16 21:15
!Wstawiaj kod w znaczniki &lt;code=java&gt;&lt;/code&gt;. - bogdans 2015-04-16 21:16

Pozostało 580 znaków

2015-04-16 20:22
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.

Pozostało 580 znaków

2015-04-16 20:29
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.

Pozostało 580 znaków

2015-04-16 21:18

W pliku Highscore/Highscore.txt masz pusty wiersz.


To smutne, że głupcy są tak pewni siebie, a ludzie mądrzy - tak pełni wątpliwości. Bertrand Russell

Pozostało 580 znaków

2015-04-16 21:34
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!

Pozostało 580 znaków

Liczba odpowiedzi na stronę

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