Avatar billede idiotbarn Nybegynder
16. marts 2005 - 16:45 Der er 12 kommentarer og
2 løsninger

er dette et heltal?

Jeg er ved at lave et program hvor man skal skrive et heltal ind for x antal spil man vil ha.
Jeg leder efter et program stykke, der gør at hvis man skriver alt andet end et heltal, siger den, "fejl, du skal skrive et heltal" hvor man så har mulighed for at skrive igen.

Jeg forestiller mig umiddelbart et loop af en art, men har ikke kunnet finde noget der ser om inputtet er et heltal, det eneste jeg kender til er parseInt i en try blok, men den skal blive ved med at spørge indtil man skriver et tal. Hvordan gør man det?
Avatar billede bromer Nybegynder
16. marts 2005 - 16:49 #1
do {
<det du allerede sagde>
} while(true));

og så break når du modtager en int
Avatar billede idiotbarn Nybegynder
16. marts 2005 - 16:53 #2
så ha hele try/catch og alt derinde? Stopper den ikke hvis den fejler med parseInt?
Avatar billede bromer Nybegynder
16. marts 2005 - 17:01 #3
Nej det skulle jeg da ikke mene.. så ryder en vel bare til catch..
Avatar billede arne_v Ekspert
16. marts 2005 - 17:03 #4
Enten try catch eller


  public static boolean isNumber(String s) {
      if(s.length() <= 0) {
        return false;
      }
      for(int i = 0; i < s.length(); i++) {
        char c = s.charAt(i);
        if(c != ' ' && !Character.isDigit(c)) {
            return false;
        }
      }
      return true;
  }

og

String s;
for(;;) {
    s = ...;
    if(isNumber(s)) break;
    // fejl besked
}
int iv = Integer.parseInt(s);
Avatar billede _carsten Nybegynder
16. marts 2005 - 17:07 #5
Så mangler du bare try catch - den kommer her


import javax.swing.*;

public class Test{
    public static void main(String[] args){
        new Test();

        while( true ){
            String s = JOptionPane.showInputDialog(null, "Skriv et heltal");

            if (s == null)
                System.exit(0);

            try{
                int y = Integer.parseInt(s);
                System.out.println(s);
            }
            catch(NumberFormatException nf){
                JOptionPane.showMessageDialog(null, "Du skal skrive et heltal", "Fejl !!", JOptionPane.PLAIN_MESSAGE);
            }
        }
    }
}
Avatar billede idiotbarn Nybegynder
16. marts 2005 - 17:07 #6
Ok tak. Jeg finder lige ud af det og vender tilbage...men nu jeg har jer, når man bruger Scanner(System.in), så stopper den hvis man laver et mellemrum, hvordan får man den til at tage hele linien med man skriver?
Avatar billede arne_v Ekspert
16. marts 2005 - 17:09 #7
readLine formoder jeg
Avatar billede idiotbarn Nybegynder
16. marts 2005 - 17:19 #8
Noget i stil med:

    do{
        try{
        AntalSpil=Integer.parseInt(scanKey.next());
        }
                break;
        catch (NumberFormatException e) {
        System.out.println("Skriv et heltal");
        }
    }while(true);

det fungere ikke helt...den siger:

Dilemma.java:19: unreachable statement
    System.out.println("Angiv navnet på spiller 1");
        ^
1 error


readLine funger ikke...den har noget der hedder nextLine(); men så hopper den over
Avatar billede arne_v Ekspert
16. marts 2005 - 17:20 #9
do{
        try{
        AntalSpil=Integer.parseInt(scanKey.next());
        }
        catch (NumberFormatException e) {
        System.out.println("Skriv et heltal");
        }
                break;
    }while(true);
Avatar billede idiotbarn Nybegynder
16. marts 2005 - 17:23 #10
nu går den bare videre, uanset om det er et heltal eller ej man skriver
Avatar billede arne_v Ekspert
16. marts 2005 - 19:19 #11
do{
            try{
              AntalSpil=Integer.parseInt(scanKey.next());
              break;
            } catch (NumberFormatException e) {
              System.out.println("Skriv et heltal");
            }
        } while(true);
Avatar billede idiotbarn Nybegynder
17. marts 2005 - 17:42 #12
nåh ja selvfølgelig...ligger i lige svar arne_v og bromer? Tak for hjælpen til alle
Avatar billede arne_v Ekspert
17. marts 2005 - 17:44 #13
kommer her
Avatar billede bromer Nybegynder
17. marts 2005 - 17:48 #14
tak tak
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