Avatar billede bertelsenbo Nybegynder
26. september 2006 - 09:36 Der er 8 kommentarer og
1 løsning

IO trouble, input String matcher ikke en String der er ens

Svært at forklare i topic og det er sikkert også en newbie fejl fra min side ( mangler sikkert noget iterator på min ArrayList).

Jeg laver en console UI, hvor man inputter en String. Ud fra de objekter jeg har liggende i ArrayList'en sammenligner den en bestem variabel af typen String med ens input. Hvis disse to Strings == burde den udføre en toString fra objektet, men JAVA synes åbenbart at de er ens.

klassen:
import java.util.*;
import java.io.*;

public class userHandler {
   
    static public DB database = new DB();
    static private ArrayList userList = database.extractUsers();

    public static void main(String[] args) throws Exception {
        printUserList();
   
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        System.out.print("Indtast kid på user: ");
        String iv = br.readLine();
        findUserKid(iv);

        }
   
    public static void printUserList(){
        for (int i = 0; i < userList.size(); i++){
            System.out.println(userList.get(i));
           
        }
    }
       
    public static void findUserKid(String KID){
        for (int i = 0; i < userList.size(); i++){
            String listKid = ((user)userList.get(i)).getKid();
            if(listKid == KID){
                System.out.println(userList.get(i));
            }else{
                System.out.println("Dette " + KID + " matcher ikke " + listKid + ".");
            }
        }
    }
}

Beskrivelse: Henter data ud af databasen putter det i en ArrayList, printer alt i listen. Input String, går gennem ArrayListen igen og burde finde det sted hvor de to String's er ens.

Console eksempel:
Navn: Bo Bertelsen Kid: 1234567890 Password: kodeord Afdeling: Billing Norm: 37.5
Navn: John Doe Kid: 0123456789 Password: kodeord Afdeling: Query Handling Norm: 37.5
Indtast kid på user: 1234567890
Dette 1234567890 matcher ikke 1234567890.
Dette 1234567890 matcher ikke 0123456789.

Håber i kan hjælpe. 85 point fordi så har jeg et rundt antal points tilbage :-)
Avatar billede _carsten Nybegynder
26. september 2006 - 09:58 #1
Når du sammenligner tekststrenge skal du brge 'equals' ikke '='


            if(listKid.equals( KID )){
                System.out.println(userList.get(i));
            }else{
                System.out.println("Dette " + KID + " matcher ikke " + listKid + ".");
            }
Avatar billede _carsten Nybegynder
26. september 2006 - 09:59 #2
Eller eualsIgnoreCase()
Avatar billede _carsten Nybegynder
26. september 2006 - 10:00 #3
equalsIgnoreCase()
Avatar billede bertelsenbo Nybegynder
26. september 2006 - 10:01 #4
TROLDOM! hehe, mange tak for hjælpen. Jeg kan åbenbart ikke ryste php-syntaxen af mig :-)
Svar for point.
Avatar billede _carsten Nybegynder
26. september 2006 - 10:02 #5
Med  ==  spørger du om referencen til 'listKid' er lig med referencen til 'KID'

Du sammenligner ikke 'indholdet' af referencerne, det gør du med equals()
Avatar billede _carsten Nybegynder
26. september 2006 - 10:02 #6
OK
Avatar billede bertelsenbo Nybegynder
26. september 2006 - 10:04 #7
Igen; Mange tak, nu ved jeg også hvad == egentlig gør i JAVA. :-)
Avatar billede _carsten Nybegynder
26. september 2006 - 10:08 #8
Ja og nej

Snakker vi sammenligning af tal, så bruger man ==. :-)
Avatar billede bertelsenbo Nybegynder
26. september 2006 - 10:21 #9
Smart :-O tak igen!
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