Avatar billede mr.gessle Nybegynder
19. maj 2000 - 18:14 Der er 3 kommentarer og
2 løsninger

NullPointerException???

Hvorfor får jeg en NullPointerException når jeg afvikler mit følgende program?

import ConsoleReader.*;
import java.io.*;


public class Opgave02
{
    public static void main (String [] args)
    {
        try
        {
            FileReader tipsRække    = new FileReader("D:\\rekker.txt");
          FileWriter ud                    = new FileWriter("D:\\resultat.txt");
          PrintWriter out                = new PrintWriter(ud);
          BufferedReader in            = new BufferedReader(tipsRække);
          boolean færdig                 = false;
       
          while(!færdig)
                   
                    {String ind                = in.readLine();
                    if(ind == null)
                          færdig=true;
                    else
                       
                    Ugentlige_tal(ind);
                    for (int x = 0; x<rigtig_rækker.length; x++)
                        {out.println("Antal rigtige på"+" " +(x+1)+"."+" "+"række:"+" " +rigtig_rækker[x]);
                        }
                       
                   
                    }
                   

          tipsRække.close();
          ud.close();
        }

       
    catch(FileNotFoundException Fil)
          {System.out.println("Filen blev ikke fundet");
            System.exit(1);
          }
         
    catch(IOException Fil)
            {System.out.println("Filen kan ikke åbnes!");
              System.exit(2);
            }
           
           
   
}  //afslutter main

public static String[] Ugentlige_tal(String ind)
    { ConsoleReader indlæs = new ConsoleReader(System.in);
     
      String [] ugens_tretten = new String [13];
     
           
      for (int i = 0; i<ugens_tretten.length; i++)
                {
               
                System.out.println("Indtast venligst ugens" + " "+(i+1)+"."+"rigtige tipstal:");
                ugens_tretten[i] = indlæs.readLine();
                }
                       
        RigtigeTalPrRække(ugens_tretten);
        return ugens_tretten;
    }
   
public static int[] RigtigeTalPrRække(String [] ugens_tretten)
    {int rigtige_pr_række = 0;
    int [] rigtig_rækker = new int [13];
       
    for (int j = 0; j<rigtig_rækker.length; j++)
            { if(ind.substring(j,j+1) == ugens_tretten[j])
                    {rigtige_pr_række ++;
                      rigtig_rækker[j] = rigtige_pr_række;
                    }
                else
                    rigtig_rækker[j] = 0;
            }
      return rigtig_rækker;
    }
               
   
   
private static String [] ugens_tretten;
private static String ind;
private static int [] rigtig_rækker;


}



Avatar billede erikjacobsen Ekspert
19. maj 2000 - 19:54 #1
Der kan være flere ting galt. En ting springer i øjenene. I Ugentlige_tal har du en
erklæring af en variabel

    String [] ugens_tretten = new String [13];

som du også putter noget i. I RigtigeTalPrRække bruger du også en variabel
ved navn ugens_tretten, men den refererer ikke til den lokale i Ugentlige_tal, men
til den globale nogle linier længere nede:

    private static String [] ugens_tretten;

som ikke er blevet initialiseret.

Avatar billede mr.gessle Nybegynder
22. maj 2000 - 12:06 #2
Jeg har nu fjernet de gentagende erklæringer af samme variabelnavn. Programmet kommer stadig med en nullpointer-ting...
Avatar billede erikjacobsen Ekspert
22. maj 2000 - 20:51 #3
Fint nok. Må vi se  koden, og eksempel på input filer.
Avatar billede dibbern Nybegynder
01. juni 2000 - 12:45 #4
import ConsoleReader.*;
import java.io.*;


public class Opgave02
{
    public static void main (String [] args)
    {
        try
        {
          FileReader tipsRække    = new FileReader("D:\\rekker.txt");
          FileWriter ud                    = new FileWriter("D:\\resultat.txt");
          PrintWriter out                = new PrintWriter(ud);
          BufferedReader in            = new BufferedReader(tipsRække);
          boolean færdig                = false;
       
          while(!færdig)
                   
                    {String ind                = in.readLine();
                    if(ind == null)
                          færdig=true;
                    else
                       
                    Ugentlige_tal(ind);
                    for (int x = 0; x<rigtig_rækker.length; x++)
                        {out.println("Antal rigtige på"+" " +(x+1)+"."+" "+"række:"+" " +rigtig_rækker[x]);
                        }
                         
                   
                    }
                   

          tipsRække.close();
          ud.close();
        }

       
    catch(FileNotFoundException Fil)
          {System.out.println("Filen blev ikke fundet");
            System.exit(1);
          }
         
    catch(IOException Fil)
            {System.out.println("Filen kan ikke åbnes!");
              System.exit(2);
            }
           
           
   
}  //afslutter main

public static String[] Ugentlige_tal(String ind)
    { ConsoleReader indlæs = new ConsoleReader(System.in);
     
     
     
           
      for (int i = 0; i<ugens_tretten.length; i++)
                {
               
                System.out.println("Indtast venligst ugens" + " "+(i+1)+"."+"rigtige tipstal:");
                ugens_tretten[i] = indlæs.readLine();
                }
                       
        RigtigeTalPrRække(ugens_tretten);
        return ugens_tretten;
    }
   
public static int[] RigtigeTalPrRække(String [] ugens_tretten)
    {int rigtige_pr_række = 0;
           
    for (int j = 0; j<rigtig_rækker.length; j++)
            { if(ind.substring(j,j+1) == ugens_tretten[j])
                    {rigtige_pr_række ++;
                      rigtig_rækker[j] = rigtige_pr_række;
                    }
                else
                    rigtig_rækker[j] = 0;
            }
      return rigtig_rækker;
    }
               
   
   
private static String [] ugens_tretten = new String [13];
private static String ind;
private static int [] rigtig_rækker = new int [13];


}

Der er rod i dine variabel scoops ovenstående rettelse i din kode vil bringe dig et stykke videre, men der er stadig fejl i koden.
Avatar billede lynggaard Nybegynder
10. juni 2000 - 00:17 #5
den statiske
private static String ind;

kolliderer med:
* main funktionens: String ind = in.readLine();
* Ugentlige_tal(String ind);

hvilket gør at den statiske stadig står til null når følgende i RigtigeTalPrRække(String [] ugens_tretten) :
if(ind.substring(j,,j+1)




Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester