Avatar billede the_raze Nybegynder
18. januar 2005 - 18:22 Der er 12 kommentarer og
1 løsning

Indtaste vector fra keyboardet

Hejsa!

Jeg har et lille problem, vil gerne indtaste en række forskellige numre fra keyboardet - jeg har en keyboard class der fint kan læse ting ind fra keyb. så problemet ligger ikke der! :)

Det jeg gerne vil, er at indtaste 1 tal - derefter trykke enter (så bliver tallet tilføjet til min vector (vector.add)).. Derefter vil jeg have mulighed for at trykke tal igen, og så enter.. Sådan skal det fortsætte, til jeg ikke skriver noget og derefter trykke enter - så skal den bare hoppe ud af det..

Håber det gav mening, og at nogen kan hjælpe? Jeg havde forestillet mig noget med en while, men synes ikk rigtig det giver resultat :/
Avatar billede arne_v Ekspert
18. januar 2005 - 18:30 #1
Prøv noget a la:

Vector v = new Vector();
String line = kb.readLine();
while(!line.equals("")) {
  v.add(Integer.parseInt(line));
  line = kb.readLine();
}
Avatar billede arne_v Ekspert
18. januar 2005 - 18:31 #2
Jeg har gættet på din keyboard klasse.

(Java 1.5 har iøvrigt en glimrende Scanner klasse)
Avatar billede jakoba Nybegynder
18. januar 2005 - 18:38 #3
fx:
    Integer laesEtTal () throws Exception {
        // hvis brugeren indtaster et tal
        //    return new Integer( detTal );
        // ellers
        //    Throw Exception();
    }

    Vector indlaesEnMasseTal() {
        Vector resultat = new Vaector();
        while ( true ) {
            try {
                Integer tal = laesEtTal();
            } catch (Exception e) {
                break
            }
            resultat.add( tal );
        }
        return resultat;
    }
Avatar billede arne_v Ekspert
18. januar 2005 - 18:41 #4
Efter at have set jakobs så springer det jo meget i øjnene at min:

v.add(Integer.parseInt(line));

skal være:

v.add(new Integer(line));

sorry ...
Avatar billede jakoba Nybegynder
18. januar 2005 - 18:43 #5
skal man ikke også have 1.5 for at give int som parameter i
      v.add(Integer.parseInt(line));
Avatar billede jakoba Nybegynder
18. januar 2005 - 18:43 #6
man jeg er langsom :-))
Avatar billede the_raze Nybegynder
18. januar 2005 - 18:58 #7
Så først Arne's, så det rodede jeg lidt med.. og rettede - samme ting som i også er kommet frem til :)

String line = Keyboard.readString();
            while(!line.equals(""))
            {
                bestil_t.add(new Integer(Integer.parseInt(line)));
                  line = Keyboard.readString();
            }

Dog kan jeg ikke få den til at "stoppe" når jeg intet indtaster.. Men har så ændret den så man taster -1.. Men vil lige prøve med exception engang.. kunne være meget lækkert man ikk skulle indtaste noget, når man var færdig..
Avatar billede arne_v Ekspert
18. januar 2005 - 19:01 #8
Hm.

Har din Keyboard.readString() indbygget en "feature" så den blive ved med at prompte
indtil der er indtastet noget ?
Avatar billede the_raze Nybegynder
18. januar 2005 - 19:07 #9
det kan selvf godt være.. Kan tænkes at være derfor .. den spring selvf til ny linie når jeg trykker enter.. men ja, betyder jo ikk at den har "godtaget" det.. Har faktisk ikk rigtig kigget i den, da det er noget jeg har fra en java bog.. Men burde jeg nok lige..
Avatar billede arne_v Ekspert
18. januar 2005 - 19:18 #10
Ja for følgende virker:

import java.io.*;
import java.util.*;

public class InputToVector {
    public static void main(String[] args) throws Exception {
        BufferedReader kb = new BufferedReader(new InputStreamReader(System.in));
        Vector v = new Vector();
        String line = kb.readLine();
        while(!line.equals("")) {
          v.add(new Integer(line));
          line = kb.readLine();
        }
        System.out.println(v);
    }
}
Avatar billede the_raze Nybegynder
19. januar 2005 - 10:13 #11
tusind tak! :) PErfekt som altid, smid et svar arne! :)
Avatar billede arne_v Ekspert
19. januar 2005 - 10:32 #12
svar
Avatar billede arne_v Ekspert
25. februar 2005 - 22:13 #13
så mangler du bare at acceptere
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