Avatar billede chr.kj Nybegynder
18. december 2007 - 00:47 Der er 6 kommentarer og
1 løsning

Min slet metode virker ikke?

Er der nogle af jer der kan se hvorfor denne slet metode ikke virker??

        public boolean deleteVare( String varenummer ) {
            System.out.println( "Sletter vare med varenummr:" + varenummer );
            for( KasseInterface elem : varer ) {
                if (elem.getVarenummer() == varenummer )  {                     
                    getVarer().remove( elem );
                    System.out.println( "Har slettet vare: " + varenummer );
                    return true;
                }
            }
            System.out.println("Kunne ikke slette varen" );
            return false;           
        }

I min GUI har jeg :

    private void jButtonSletActionPerformed(java.awt.event.ActionEvent evt) {                                           
// TODO add your handling code here:                                           
       
        lageret.deleteVare( jTextFieldVarenummer.getText() );                     
       
        jListOversigt.setListData( lageret.getVarer().toArray() );                   
       
    } 

Det mest underlige er nu at metoden virker i et andet program??
Avatar billede arne_v Ekspert
18. december 2007 - 01:42 #1
if (elem.getVarenummer() == varenummer )  {                   

skal nok være:

              if (elem.getVarenummer().equals(varenummer) )  {
Avatar billede chr.kj Nybegynder
18. december 2007 - 09:58 #2
Perfekt arne_v :o)

Smid et svar og tak for hjælpen.
Avatar billede arne_v Ekspert
18. december 2007 - 15:07 #3
kommer her
Avatar billede arne_v Ekspert
18. december 2007 - 15:12 #4
== tester om argumenterne ligger samme sted i memory

.equals tester om de indeholder de samme bogstaver

lille demo:

public class Equals {
    public static void main(String[] args) {
        String s1 = "ab";
        String s2 = new String("ab");
        String s3 = "a" + "b";
        String s4 = new String("a") + new String("b");
        String s5 = a() + b();
        System.out.println((s1=="ab") + " " + (s1.equals("ab")));
        System.out.println((s2=="ab") + " " + (s2.equals("ab")));
        System.out.println((s3=="ab") + " " + (s3.equals("ab")));
        System.out.println((s4=="ab") + " " + (s4.equals("ab")));
        System.out.println((s5=="ab") + " " + (s5.equals("ab")));
    }
    private static String a() {
        return "a";
    }
    private static String b() {
        return "b";
    }
}
Avatar billede chr.kj Nybegynder
18. december 2007 - 15:49 #5
Efter at have kørt den test sammen med min søg knap får jeg dette frem:

Søger efter vare med varenummer: 7890
true true
false true
true true
false true
false true

Hvad betyder det??
Avatar billede arne_v Ekspert
18. december 2007 - 16:08 #6
Det skulle ikke blandes med dit program.

Det er bare et lille dmeo program som viser at == ikk er godt til streng sammenligning.

Kig paa koden og kig paa output.
Avatar billede chr.kj Nybegynder
18. december 2007 - 17:08 #7
Ok.. Troede måske der kom nogle guldkorn ud der ;o)

Men kan godt se at resultaterne er svingende med ==
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