Avatar billede idiotbarn Nybegynder
17. marts 2005 - 19:00 Der er 12 kommentarer og
1 løsning

Scanner klassen - System.in, tager ikke hele linien

Jeg har noget kode som skal indlæse to navne. Ind til videre ser den således ud:
   
        System.out.println("Angiv navnet på spiller 1");
    Spiller1=scanKey.next();
   
    System.out.println("Angiv navnet på spiller 2");
    Spiller2=scanKey.next();

Problemet er nu at hvis man skrive fx Brian C tager den og ligger Brian i Spiller1 og C i spiller to. Det er vel egentligt også det man ber den om, men mit spørgsmål er så. Hvordan får jeg den til at tage hele linien.
Bruger jeg scanKey.nextLine(); skriver den:

Angiv navnet på spiller1
Angiv navnet på spiller2
:
Skriver man så et navn, bliver hele navnet lagt i Spiller 2. Jeg har også prøvet
while(scanKey.hasNext()){
Spiller1+=scanKey.next();
}
men kommer aldrig ud af løkken...

Hvordan gør jeg det?
Avatar billede kalp Novice
17. marts 2005 - 19:06 #1
int counter = 0;

while(scanKey.hasNext() && counter < 2){
counter++;

kan du ikke bare gøre sådan?
Avatar billede idiotbarn Nybegynder
17. marts 2005 - 19:20 #2
jeg ved jo ikke hvor langt navnet der bliver skrevet er...
Avatar billede kalp Novice
17. marts 2005 - 19:27 #3
hvilken klasse er det du bruger til at hive data ind med? har evt noget meget lettere nemlig
Avatar billede arne_v Ekspert
17. marts 2005 - 19:34 #4
nextLine() virker fint hos mig !

import java.util.*;

public class ScanOrNotScan {
    public static void main(String[] args) {
        Scanner scn = new Scanner(System.in);
        System.out.print("Enter #1: ");
        String s1 = scn.nextLine();
        System.out.print("Enter #2: ");
        String s2 = scn.nextLine();
        System.out.println(s1 + " " + s2);
    }
}


Enter #1: aaaa
Enter #2: bb
aaaa bb
Avatar billede soreno Praktikant
17. marts 2005 - 19:34 #5
Det ser ikke ud til at give problemer hos mig:

import java.util.*;

public class ScannerTest {

  public static void main(String[] args) {
    Scanner lexer = new Scanner(System.in);
    String str1 = lexer.nextLine();
    String str2 = lexer.nextLine();
    System.out.println(str1);
    System.out.println(str2);
  }
}

$ java ScannerTest
EÆRMG#ÆO¤T34tpæ34gæl3mgeærg peorg peokrgpeorkg oeprk gerg4
eæorkg eÆRGOKE RPGOK#¤POKTG 3pofoiwedg
str1 = EÆRMG#ÆO¤T34tpæ34gæl3mgeærg peorg peokrgpeorkg oeprk gerg4
str2 = eæorkg eÆRGOKE RPGOK#¤POKTG 3pofoiwedg
Avatar billede idiotbarn Nybegynder
17. marts 2005 - 19:52 #6
så er det muligvis inden...jeg har:

import java.util.Scanner;
public class Dilemma{
    public static void main(String args[]){
        Moede.Handling valgA,valgB;
        String Spiller1,Spiller2;
        int AntalSpil;
        Scanner scanKey = new Scanner(System.in);
        System.out.println("Angiv antal spil");
        do{
            try{
                AntalSpil=Integer.parseInt(scanKey.next());
                break;
                }
           
            catch (NumberFormatException e) {
                System.out.println("Skriv et heltal");
                }
        }while(true);
       
    if (AntalSpil!=0){
       
        System.out.println("Angiv navnet på spiller 1");
        Spiller1=scanKey.next();

        System.out.println("Angiv navnet på spiller 2");
        Spiller2=scanKey.next();
   
        Spiller SpillerA = new Spiller(Spiller1);
        Spiller SpillerB = new Spiller(Spiller2);
...
Avatar billede arne_v Ekspert
17. marts 2005 - 19:57 #7
Det er da next og ikke nextLine !?
Avatar billede idiotbarn Nybegynder
17. marts 2005 - 20:02 #8
ah...ja jeg er ved at teste forskellige ting...men se bort fra det...jeg har brugt nextLine() og det fungere ikke...samme fejl som jeg skrev i starten
Avatar billede idiotbarn Nybegynder
17. marts 2005 - 20:05 #9
import java.util.Scanner;
public class Dilemma{
    public static void main(String args[]){
        Moede.Handling valgA,valgB;
        String Spiller1,Spiller2;
        int AntalSpil;
        Scanner scanKey = new Scanner(System.in);
        System.out.println("Angiv antal spil");
        do{
            try{
                AntalSpil=Integer.parseInt(scanKey.next());
                break;
                }
           
            catch (NumberFormatException e) {
                System.out.println("Skriv et heltal");
                }
        }while(true);
       
    if (AntalSpil!=0){
       
        System.out.println("Angiv navnet på spiller 1");
        Spiller1=scanKey.nextLine();

        System.out.println("Angiv navnet på spiller 2");
        Spiller2=scanKey.nextLine();
   
        Spiller SpillerA = new Spiller(Spiller1);
        Spiller SpillerB = new Spiller(Spiller2);
...
Avatar billede arne_v Ekspert
17. marts 2005 - 20:11 #10
AntalSpil=Integer.parseInt(scanKey.nextLine());
Avatar billede arne_v Ekspert
17. marts 2005 - 20:12 #11
Enten skal du bruge nextLine eller next - de mixer vist ikke så godt.
Avatar billede idiotbarn Nybegynder
17. marts 2005 - 20:40 #12
Ah...så er det jo derfor...rettede den øverste next() og så fungerede det. Tak for hjælpen..igen :)
Avatar billede arne_v Ekspert
17. marts 2005 - 20:46 #13
så ligger jeg et svar
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