10. november 2004 - 21:44
Der er
29 kommentarer og 1 løsning
Problemer med HashMap. den retunere null, istedet for value
Hej, jeg sidder og har problemer med HashMap klassen. Jeg skal lave et telefon bog eksempel og har implementeret følgende: public MapTester() { phoneBook= new HashMap(); } public void enterNumber(String name, String number) { phoneBook.put( "charles ","(531) "); phoneBook.put( "Lisa ","(666) "); phoneBook.put( "Martin ","(999) "); } public String lookupNumber( String name) { String number =( String)phoneBook.get(name, number); return(number) ; } } Hvergang jeg compiler så er der ikke nogen syntaks fejl, men når jeg prøver at køre programet, så siger den nullpoint.. Hvordan får man den til at retunere den rigtige key til den rigtige værdi På forhånd tak
Annonceindlæg fra Infor
10. november 2004 - 21:48
#1
public enterNumber(String name, String number) { phoneBook.put( "charles ","(531) "); phoneBook.put( "Lisa ","(666) "); phoneBook.put( "Martin ","(999) "); } ?
10. november 2004 - 21:48
#2
ahh nej.. overså noget
10. november 2004 - 21:49
#3
String number =( String)phoneBook.get(name, number); bør give compile fejl - det må skule være: String number =( String)phoneBook.get(name);
10. november 2004 - 21:51
#4
like til dit nick name... bør det ikke være missmalike?
10. november 2004 - 21:51
#5
Og det er svært ikke at tro andet end at public void enterNumber(String name, String number) { phoneBook.put( "charles ","(531) "); phoneBook.put( "Lisa ","(666) "); phoneBook.put( "Martin ","(999) "); } skulle være public void enterNumber(String name, String number) { phoneBook.put( name, number); } og enterNumber( "charles ","(531) "); enterNumber( "Lisa ","(666) "); enterNumber( "Martin ","(999) ");
10. november 2004 - 21:55
#6
Hey arne hov, det er mig som har skrevet forkert, der skal kun stå number.. men den retunerer stadigvæk null. Jeg har også ændret værdierne, så der er en () udenom...
10. november 2004 - 21:56
#7
Du mener at der kun skal stå name ikke ?
10. november 2004 - 21:57
#8
Og kalder du metoden med et navn som falst er sat ind ?
10. november 2004 - 22:00
#9
public void enterNumber(String name, String number) { phoneBook.put( "charles ","(531) "); phoneBook.put( "Lisa ","(666) "); phoneBook.put( "Martin ","(999) "); } public String lookupNumber( String name) { String number =( String)phoneBook.get(name); return(number) ; Jeg er ikke lige helt med på det eksempel du gav udenover
10. november 2004 - 22:03
#10
Min 21:51:50 kommentar har intet med dit problem at gøre bare et generelt godt råd. Hvad kalder du lookupNumber med ?
10. november 2004 - 22:09
#11
hvad jeg kalder den med.... igen er jeg ikke med public String lookupNumber( String name).. jeg skal bruge get metoden, så den retuner værdi som hører til den bestemte key.. Når jeg går og taster " charles" for jeg null tilbage i hovedet, istedet for 531
10. november 2004 - 22:11
#12
" charles" skal give null "charles " skal give "(531) "
10. november 2004 - 22:12
#13
public String lookupNumber(String number) { String number =(String)phoneBook.get(number); return(number) ; }
10. november 2004 - 22:12
#14
er faktisk forvirret
10. november 2004 - 22:12
#15
charles skal da give 531....
10. november 2004 - 22:13
#16
charles efterfulgt af mellemrum skal give 531 mellemrum efterfulgt af charles skal give null
10. november 2004 - 22:14
#17
kalp> slå number op med number ??
10. november 2004 - 22:18
#18
nu går det da helt galt for os drenge.. Jeg skal bruge name , til at slå number op med så må metoden vel hedde.. public String lookupNumber(String name) { String number =(String)phoneBook.get(name); return(number) ; }
10. november 2004 - 22:19
#19
ja !
10. november 2004 - 22:21
#20
men den retunere stadigvæk null
10. november 2004 - 22:23
#21
Og du kalde med charles efterfulgt af mellemrum og ikke mellemrum efterfulgt af charles eller bare charles ?
10. november 2004 - 22:32
#22
arne_v: 10/11-2004 22:14:06 Jeg ved det godt: ) derfor jeg skrev min kommentar lige efter.. så den var galt hehe
10. november 2004 - 22:36
#23
Jeg ved ikke hvad jeg gjorder, men nu virker det
10. november 2004 - 22:37
#24
din ekspert hehe
10. november 2004 - 22:37
#25
jeg var ellers lige ved at have løsningen :p
10. november 2004 - 22:39
#26
package Telefonbog; import javax.swing.JFrame; import java.awt.Dimension; import javax.swing.JPanel; import java.awt.Rectangle; import javax.swing.JTextField; import javax.swing.JLabel; import javax.swing.JButton; import java.awt.event.ActionListener; import java.awt.event.ActionEvent; public class TelefonbogFrame extends JFrame { private TelefonbogControl tc; private JPanel jPanel1 = new JPanel(); private JTextField jTextField1 = new JTextField(); private JTextField jTextField2 = new JTextField(); private JLabel jLabel1 = new JLabel(); private JLabel jLabel2 = new JLabel(); private JButton jButton1 = new JButton(); private JButton jButton2 = new JButton(); private JLabel jLabel3 = new JLabel(); private JButton jButton3 = new JButton(); public TelefonbogFrame() { try { jbInit(); tc = new TelefonbogControl(); } catch(Exception e) { e.printStackTrace(); } } private void jbInit() throws Exception { this.getContentPane().setLayout(null); this.setSize(new Dimension(400, 300)); this.setTitle("Telefonbog"); jPanel1.setBounds(new Rectangle(0, 0, 390, 265)); jPanel1.setLayout(null); jTextField1.setBounds(new Rectangle(105, 20, 195, 35)); jTextField2.setBounds(new Rectangle(105, 75, 195, 35)); jLabel1.setText("Navn"); jLabel1.setBounds(new Rectangle(10, 20, 70, 35)); jLabel2.setText("Telefonnummer"); jLabel2.setBounds(new Rectangle(10, 75, 90, 35)); jButton1.setText("Indsæt"); jButton1.setBounds(new Rectangle(105, 145, 85, 35)); jButton1.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { jButton1_actionPerformed(e); } }); jButton2.setText("Find Nummer"); jButton2.setBounds(new Rectangle(195, 145, 105, 35)); jButton2.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { jButton2_actionPerformed(e); } }); jLabel3.setText(" "); jLabel3.setBounds(new Rectangle(15, 235, 370, 25)); jButton3.setText("Antal"); jButton3.setBounds(new Rectangle(105, 190, 85, 30)); jButton3.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { jButton3_actionPerformed(e); } }); jPanel1.add(jButton3, null); jPanel1.add(jLabel3, null); jPanel1.add(jButton2, null); jPanel1.add(jButton1, null); jPanel1.add(jLabel2, null); jPanel1.add(jLabel1, null); jPanel1.add(jTextField2, null); jPanel1.add(jTextField1, null); this.getContentPane().add(jPanel1, null); } private void jButton1_actionPerformed(ActionEvent e) { String navn = jTextField1.getText(); int tlfNr = Integer.parseInt(jTextField2.getText()); tc.indsætPerson(navn, tlfNr); jLabel3.setText("Ny person indsat"); } private void jButton3_actionPerformed(ActionEvent e) { jLabel3.setText("Der er " + tc.antalPersoner() + " person(er) i telefonbogen"); } private void jButton2_actionPerformed(ActionEvent e) { String navn = jTextField1.getText(); int nr = tc.findTlflNrForNavn(navn); if (nr >=0) jTextField2.setText("" + nr); else { jTextField1.setText(""); jLabel3.setText("Navnet findes ikke"); } } } package Telefonbog; import java.util.ArrayList; public class TelefonbogControl { ArrayList TListe; public TelefonbogControl() { TListe = new ArrayList(); } public void indsætPerson(String n, int tn) { Person p = new Person(n, tn); TListe.add(p); } /** * Finder personen med det angivne navn og returnerer telefonnummeret; * Hvis personen ikke findes returneres -1. */ public int findTlflNrForNavn(String n) { boolean found = false; int i = 0; while(i< TListe.size() && !found) { if ( ((Person)TListe.get(i)).navn.equals(n) ) { found = true; } else i++; } if (i< TListe.size()) return ((Person)TListe.get(i)).tlfNr; else return -1; } public int antalPersoner() { return TListe.size(); } } package Telefonbog; import java.awt.Frame; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import javax.swing.UIManager; import java.awt.Dimension; import java.awt.Toolkit; public class TelefonbogApp { public TelefonbogApp() { Frame frame = new TelefonbogFrame(); Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); Dimension frameSize = frame.getSize(); if (frameSize.height > screenSize.height) { frameSize.height = screenSize.height; } if (frameSize.width > screenSize.width) { frameSize.width = screenSize.width; } frame.setLocation((screenSize.width - frameSize.width) / 2, (screenSize.height - frameSize.height) / 2); frame.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } }); frame.setVisible(true); } public static void main(String[] args) { try { UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); } catch(Exception e) { e.printStackTrace(); } new TelefonbogApp(); } } package Telefonbog; public class Person { String navn; int tlfNr; public Person(String n, int tn) { navn = n; tlfNr = tn; } }
11. november 2004 - 09:39
#27
hold da helt ferie.... jamen jeg siger tak for hjælpen ....
11. november 2004 - 10:45
#28
ingen årsag: )
22. november 2004 - 11:49
#29
læg et svar og luk spørgsmålet:)
16. december 2004 - 12:55
#30
tak for hjælpen
Kurser inden for grundlæggende programmering