Avatar billede frankedrengen Nybegynder
08. juli 2013 - 11:14 Der er 2 kommentarer og
1 løsning

problem med Scanner og try catch statement

Starten af dette program koerer fint med user input fra person 1. Problemet starter ved user input fra person 2. Jeg har i linie 27 proevet med "String name2 = scan.next();" hvilket virker men saa kan man kun indtaste eet navn, og ikke f.eks fornavn plus efternavn.

import java.util.Scanner;

public class Tst {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
       
        System.out.println("person 1 enter your name: ");
        String name = scan.nextLine();
        System.out.println("person 1 enter your age: ");
       
        int age = 0;
        boolean gotIt = false;
        while(!gotIt) {
            try {
                age = scan.nextInt();
                gotIt = true;
            } catch (Exception e) {
                System.err.println("That is not a valid number!!!");
                scan.next();
            }
        }
        System.out.println("your name is " + name + "\n" +
                "your age is " + age + "\n");
       
       
        System.out.println("person 2 enter your name: ");
        String name2 = scan.nextLine();
        System.out.println("person 2 enter your age: ");
       
        int age2 = 0;
        boolean gotIt2 = false;
        while(!gotIt2) {
            try {
                age2 = scan.nextInt();
                gotIt2 = true;
            } catch (Exception e) {
                System.err.println("That is not a valid number!!!");
                scan.next();
            }
        }
        System.out.println("your name is " + name2 + "\n" +
                "your age is " + age2 + "\n");
       
       
    }
}
Avatar billede sowiho Nybegynder
09. juli 2013 - 12:45 #1
du skal lave en
scan.nextLine();
inden String name2 = scan.nextLine();

scan.nextInt() laver åbenbart lidt ballade..
jeg fandt svaret her: http://stackoverflow.com/questions/13993987/java-util-scanner-jumps-over-input-requests
Avatar billede frankedrengen Nybegynder
11. juli 2013 - 10:12 #2
Hej sowiho
tak for svaret
jeg forstaar ikke helt logikken omkring hvorfor "scan.nextInt()" laver ballade, men kan nu konstatere at programmet virker.

send et svar
Avatar billede sowiho Nybegynder
13. juli 2013 - 17:46 #3
Det er nok fordi når du trykker et tal "4" og så trykker enter som er "\n" så har den stadig "\n" og det er den næste nextLine() tager fat i.
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