Avatar billede dustie Mester
28. november 2007 - 21:13 Der er 8 kommentarer og
1 løsning

kritik til min kode

Hej.

Kan jeg få lidt kritik af min kode? Med tanken om at jeg begyndte igår i baghovedet ;-)




import javax.swing.*;
import java.util.Random;
public class GuessGameGui {

    /**
    * @param args
    */
    public static void main(String[] args) {
       
        int max = 100;
        String guess;
        int guessInt;
        int count = 0;
       
        Random generator = new Random();
        int n = generator.nextInt(max);
       
       
        try {
            guess = JOptionPane.showInputDialog(null, "Jeg tænker på et tal. Kan du gætte det?", "Gætte leg!", JOptionPane.QUESTION_MESSAGE);
            do {
                count++;
                if(guess == null) {
                    break;
                }
                guessInt = Integer.parseInt(guess);
                if(guessInt > n) {
                    guess = JOptionPane.showInputDialog(null, "For højt. Prøv igen:", "Forkert", JOptionPane.QUESTION_MESSAGE);
                }else if(guessInt < n) {
                    guess = JOptionPane.showInputDialog(null, "For lavt. Prøv igen:", "Forkert", JOptionPane.QUESTION_MESSAGE);
                }else{
                    JOptionPane.showMessageDialog(null,"Korrekt!\nAntal forsøg: " + count);
                }
            }while (guessInt != n);
        }catch(Exception  e) {
            JOptionPane.showMessageDialog(null,"Farvel!");
        }
    }
}
Avatar billede dustie Mester
28. november 2007 - 21:13 #1
Hov, det ser lidt rodet ud desværre.
Avatar billede nielle Nybegynder
28. november 2007 - 21:33 #2
Der er vist ikke så meget at påtale. Nydelig kode, nydelig programlogik. :^)

Jeg ville nok selv flytte definitionen af diverse variable ind i det scope de bruges: F.eks. kan "guess" flyttes ind i do-løkken. Det er heller ikke klart om der er nogen speciel grund til at have "max" - den bruges jo kun et sted.

Du kunne msåke overveje om det er Exception du skal catche eller om du bør være lidt mere specifik på hviloken type Exeptions der kunne komme.

Du bør være lidt mere omhyggelig med formateringen: Hvornår skal der være tomme linjer for at hjælpe med læsbarheden? Hvornår skal der være mellemrum før og efter {- og } tegn? Skal der være mellemrum efter komamer? Den slags ting...
Avatar billede _carsten Nybegynder
28. november 2007 - 21:50 #3
Med kun én dag i faget synes jeg faktisk det er flot, men som nielle vil jeg sige, vent med at definere variabler til det er strengt nødvendigt, det gør det nemmere at læse koden

Sådan ville jeg skrue den sammen


import javax.swing.*;
import java.util.Random;
public class GuessGameGui {

    /**
    * @param args
    */
    public static void main(String[] args) {


        int max = 100;
        Random generator = new Random();
        int n = generator.nextInt(max);
        int count = 0;

       

        do {
            String guess = JOptionPane.showInputDialog(null, "Jeg tænker på et tal. Kan du gætte det?", "Gætte leg!", JOptionPane.QUESTION_MESSAGE);
            count++;
           
            if(guess == null) {
                break;
            }

            try{
                int guessInt = Integer.parseInt(s);

                if(guessInt > n) {
                    guess = JOptionPane.showInputDialog(null, "For højt. Prøv igen:", "Forkert", JOptionPane.QUESTION_MESSAGE);
                }
                else if(guessInt < n) {
                    guess = JOptionPane.showInputDialog(null, "For lavt. Prøv igen:", "Forkert", JOptionPane.QUESTION_MESSAGE);
                }
                else{
                    JOptionPane.showMessageDialog(null,"Korrekt!\nAntal forsøg: " + count);
                }
            }
            catch(NumberFormatException nfe){
                JOptionPane.showMessageDialog( nfe.getMessage() ,"Fejl!");
            }


        }while (guessInt != n);
       
        JOptionPane.showMessageDialog(null ,"Farvel!");
    }
}
Avatar billede dustie Mester
28. november 2007 - 21:56 #4
Tak for hjælpen.
Lig et svar og point vil blive givet :-)
Avatar billede nielle Nybegynder
28. november 2007 - 21:59 #5
Svar :^)
Avatar billede nielle Nybegynder
28. november 2007 - 22:13 #6
Takke for point :^)
Avatar billede jakoba Nybegynder
29. november 2007 - 00:03 #7
Jeg kan ikke rigtig lide din try-catch. den er lovlig omfattende. Såpvidt jeg kan se er grunden til den at brugeren kan gå hen og skrive noget andet end et tal. Men hvorfor abortere hele spillet af den grund når du kan nøjes med bare at bede ham indtaste et ordentligt tal ?

eg:
        do {
            bool ikkeEtTal = true;
            try{
                int guessInt = Integer.parseInt(s);
                ikkeEtTal = false;
            } catch( exception e ) {
                guess = JOptionPane.showInputDialog(null, "Du skal skrive et tal. Prøv igen.", JOptionPane.QUESTION_MESSAGE);
            }
        } while ( ikkeEtTal );
og så først bagefter teste om det indtastede tal er korrekt.

mvh JakobA
Avatar billede arne_v Ekspert
29. november 2007 - 00:31 #8
Ens IDE bør kunne reformatere ens kode til Java coding convention.

Eclipse: højre klik, source, format kan fixe en hel del
Avatar billede dustie Mester
29. november 2007 - 09:19 #9
Tak for svarene. Jeg retter det straks! :-)
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