10 berichten aan het bekijken - 1 tot 10 (van in totaal 10)
  • Q:
    Bijdrager
    Aanrecht

    Java, een paar struikelpunten

    Ik wil een rekenmachientje maken maar nu loop ik vast bij het volgende

    Ik wil uit een dropbox dingen selecteren en daar een actie aan vast hangen. Nu wilde ik dat doen door een string-to-int te gebruiken maarrrrrrr

    Da wil nie.

    Ik gebruik Eclipse.

    [code:1:64580f78df]package Rekenmachine;

    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;

    public class GUI extends JFrame implements ActionListener{

    /**
    *
    */
    private static final long serialVersionUID = 1;
    private JLabel console;

    GUI(String name) {
    super(name);
    JFrame frame = new JFrame(name);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    //frame.pack();
    console = new JLabel();
    setFocusable(true);
    final String[] contractenKiezer = {

    "1 Jaar Enkel Tarief",
    "1 Jaar Dubbel Tarief",
    "3 Jaar Enkel Tarief",
    "3 Jaar Dubbel Tarief",
    };
    int i = Integer]valueOf(contractenKiezer).intValue();

    //Hierboven gaat het mis.
    // hij zegt: The method valueOf(String) in the type Integer is not applicable for the arguments (String[])

    JComboBox cK = new JComboBox(contractenKiezer);
    JButton button = new JButton("Calculeer");
    //button.addActionListener(this);
    frame.add(button);
    frame.add(console);
    frame.add(cK);
    frame.setSize(300,300);
    frame.setLocation(300,100);
    frame.setVisible(true);

    }

    public void actionPerformed(ActionEvent e)
    {

    }

    }
    [/code:1:64580f78df]

    Iemand suggesties?

    mvg machiel

    Edit: En de JButton wordt ook niet zichtbaar hoewel ik die wel aanzet. Weet iemand wat ik daar mis?

    Bijdrager
    palahala

    [code:1:bf7a9ab2b1] final String[] contractenKiezer = {

    "1 Jaar Enkel Tarief",
    "1 Jaar Dubbel Tarief",
    "3 Jaar Enkel Tarief",
    "3 Jaar Dubbel Tarief",
    };
    int i = Integer]valueOf(contractenKiezer).intValue();[/code:1:bf7a9ab2b1]
    Die laatste regel is wat gek in het forum terecht gekomen denk ik? Maar dit doet helemaal niks met de combobox die je wilt gebruiken om de keuze tussen deze 4 dingen te maken. Dus je probeert nu de int-waarde van 4 dingen tegelijk te krijgen (en die 4 dingen zijn niet eens getallen)…

    Maar, ehhh: wil je dit op een website gaan zetten? Client side Java dus? Ik wist niet dat mensen dat nog gebruikten.

    Bijdrager
    excel20

    [code:1:c167d5bf74]int i = Integer]valueOf(contractenKiezer).intValue(); [/code:1:c167d5bf74]
    volgens mij moet die ] sowieso een . zijn.
    je naamgeving is wat twijfelachtig: wat is i? Wat doe je met die i?

    Je probeert een StringArray te stoppen in een methode die een string met daarin een getal verwacht, bijv. “1984”

    Bijdrager
    basiel

    Integers uit strings halen doe je als volgt:

    [code:1:e7cabcd303]
    String myString = "156";
    int i = Integer.parseInt(myString);

    [/code:1:e7cabcd303]

    Wat jij doet is een string van de vorm “1 blbalbezlrb” en die zal zeker NumberFormatException throwen als je die wilt converteren.

    Maar jij doet het zelfs nog straffer:
    Jij roept Integer.parseInt(String s) op met een String[] (dus een array van Strings). Dit zal dus nooit werken en de error boodschap zegt dus exact wat je mis doet.

    Dus gouden raad lees de error eerst eens voor je in paniek een forum raadpleegt.

    Bijdrager
    palahala
    ”basiel”

    Integers uit strings halen doe je als volgt:
    [code:1:fef04ec908]String myString = "156";
    int i = Integer.parseInt(myString);[/code:1:fef04ec908]

    Er zijn mensen die vinden dat je Integer#valueOf (en dan naar int met #intValue, zonder autounboxing) moet gebruiken vanwege caching. Maar dat gaat dit topic wat te buiten denk ik.

    Bijdrager
    iJoost

    @palahala

    Tja…;-)

    The first rule of optimizing is: Don’t.

    The second rule is: I wouldn’t.

    The third rule is: Do you really have to?

    Bijdrager
    nookie

    @ (Chriet) palahala: Er is er één die het zeker zou snappen, ik in ieder geval niet. :P:P

    Bijdrager
    palahala
    ”iJoost”

    The first rule of optimizing is: Don’t.

    The second rule is: I wouldn’t.

    The third rule is: Do you really have to?

    Ach, ik zeg altijd dat er meer geheugen in de server moet als dingen te langzaam worden… Maar als mensen stellen dat parseInt te verkiezen is boven valueOf, dan is het wel belangrijk om ook de tegenargumenten nog even te noemen.:-)

    Bijdrager
    Aanrecht

    Okeeeeeeee
    Ik denk dat ik eerst maar weer even in mn tutorialboek duik xD

    Bijdrager
    basiel

    Hieronder mijn antwoord volgens de javadoc van Integer

    valueOf

    public static Integer valueOf(String s)
    throws NumberFormatException
    Returns an Integer object holding the value of the specified String. The argument is interpreted as representing a signed decimal integer, exactly as if the argument were given to the parseInt(java.lang.String) method. The result is an Integer object that represents the integer value specified by the string.
    In other words, this method returns an Integer object equal to the value of:

    new Integer(Integer.parseInt(s))
    Parameters:
    s – the string to be parsed.
    Returns:
    an Integer object holding the value represented by the string argument.
    Throws:
    NumberFormatException – if the string cannot be parsed as an integer.

    Dit wil dus zeggen dat als je Integer.valueOf(String s).intValue() doet je 2 onnodige method calls doet. Want in de oorspronkelijke vraag wou hij een int en geen Integer als resultaat. Dus mijn methode is efficienter en is wat je in zijn geval zou moeten gebruiken.

    Tevens vind ik autoboxing handig maar een gevaarlijk speeltje om tegen nullpointer exceptions aan te lopen als je niet weet wat je aan het doen bent.

    Groeten
    Basiel

10 berichten aan het bekijken - 1 tot 10 (van in totaal 10)

Je moet ingelogd zijn om een reactie op dit onderwerp te kunnen geven.