Avatar billede fiskesuppe Nybegynder
27. oktober 2002 - 21:08 Der er 4 kommentarer og
1 løsning

Fejl i Java-program

Er der nogen der kan rette fejlen i dette Magic8ball-program?

import javax.swing.JOptionPane;

public class magic8ball {
  public static void main(String arguments[]) {
    int counter = 0;
    do {
      String besked; // her gemmes svaret på 8ball spørgsmålet
      int randomTal = (int) (Math.random()*7+1); // tilfældigt tal mellem 0 og 7

      if(randomTal == 1) besked = "Ja, er du gal!";
      else if(randomTal == 2) besked = "NEJ!!";
      else if(randomTal == 3) besked = "Måske...";
      else if(randomTal == 4) besked = "Det ved jeg sgu ikke...";
      else if(randomTal == 5) besked = "Prøv at spørge igen senere";
      else if(randomTal == 6) besked = "Det vil jeg da ikke ud med :)";
      else if(randomTal == 7) besked = "Øhh? Prøv at spørge på en anden måde. Jeg forstår ikke spørgsmålet!";
      else besked = "Det kan jeg ikke svare på!";

      String question = null;

      while (question == null) { // Hvis brugeren trykker Cancel eller Escape
        question = JOptionPane.showInputDialog(null, "Skriv et spørgsmål og så vil "
        + "den magiske 8ball \ngive dig svaret - WOOOW, helt fantastisk!\n\n"
        + "Skriv exit for at afslutte programmet.");
      }

      while (question.equals("")) { // Hvis brugeren trykker OK uden at indtaste noget
        question = JOptionPane.showInputDialog(null, "Skriv et spørgsmål og så vil "
        + "den magiske 8ball \ngive dig svaret - WOOOW, helt fantastisk!\n\n"
        + "Skriv exit for at afslutte programmet.");
      }

      if(question.equalsIgnoreCase("exit")) // Hvis brugeren indtaster "exit"
        System.exit(0);
      else // Udskriver en besked hvis der er indtastet noget korrekt
        JOptionPane.showMessageDialog(null, besked);

      counter++;
    } while (counter > 0);
  }
}

Når man trykker OK uden at have indtastet noget og efterfølgede trykker Cancel uden at have indtastet noget, så lavet programmet nullPointerException.
Avatar billede riversen Nybegynder
27. oktober 2002 - 21:18 #1
nr. while løkke bliver ikke kørt og question er derfor stadig null

i den første while løkke kan du skrive
question == null || question.equals("")

og drop så nr. 2 while løkke..så skulle det virke
Avatar billede riversen Nybegynder
27. oktober 2002 - 21:19 #2
nr. 2 while løkke skulle der stå i første linie
Avatar billede riversen Nybegynder
27. oktober 2002 - 21:21 #3
nr. 1 while løkke skulle der stå  *LOL*
Avatar billede fiskesuppe Nybegynder
27. oktober 2002 - 21:33 #4
okay, takker. Smider du ikke et svar? :)
Avatar billede riversen Nybegynder
27. oktober 2002 - 21:34 #5
nåja...
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