26. februar 2004 - 10:13
Der er
10 kommentarer og 1 løsning
lommeregner med plus minus funktion
jeg sider og er ved at lave en lommeregner og har lavet GUI og def de forskelige knapper jeg kan bare ikke få +/- funktionen til at virke Dette er koden men der er fejl. Nogen der har nogle ideer til at lave det???? if (ae.getSource() == plusMinus){ tal1 = Double.parseDouble(input.getText()); tegn = "-"; tal1 = tegn + tal1; input.setText(""); RESTEN AF KODEN import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.util.*; public class JFrame_1 extends javax.swing.JFrame implements ActionListener{ public JFrame_1() { setTitle("Regnemaskine"); setResizable(false); initComponents(); } private void initComponents() { getContentPane().setLayout(new java.awt.GridBagLayout()); java.awt.GridBagConstraints gbc = new java.awt.GridBagConstraints(); knap = new JButton[10]; for(int i = 0;i < 10; i++){ knap[i] = new JButton(Integer.toString(i)); } input = new JTextField(15); input.setHorizontalAlignment(SwingConstants.RIGHT); gbc.gridx = 0; gbc.gridy = 0; gbc.fill = java.awt.GridBagConstraints.BOTH; getContentPane().add(input, gbc); panel = new JPanel(); panel.setLayout(new java.awt.GridLayout(4, 4)); gbc.gridx = 0; gbc.gridy = 1; gbc.fill = java.awt.GridBagConstraints.BOTH; getContentPane().add(panel, gbc); komma = new JButton(","); plusMinus = new JButton("+/-"); multipl = new JButton("*"); divider = new JButton("/"); plus = new JButton("+"); minus = new JButton("-"); c = new JButton("C"); ce = new JButton("CE"); sum = new JButton("="); panel.add(knap[7]); panel.add(knap[8]); panel.add(knap[9]); panel.add(divider); panel.add(knap[4]); panel.add(knap[5]); panel.add(knap[6]); panel.add(multipl); panel.add(knap[1]); panel.add(knap[2]); panel.add(knap[3]); panel.add(minus); panel.add(knap[0]); panel.add(komma); panel.add(plusMinus); panel.add(plus); panel2 = new JPanel(); panel2.setLayout(new java.awt.GridBagLayout()); pack(); gbc.gridx = 0; gbc.gridy = 0; gbc.fill = java.awt.GridBagConstraints.BOTH; c.setPreferredSize(new java.awt.Dimension(panel.getWidth()/4, panel.getHeight()/4)); panel2.add(c, gbc); gbc.gridx = 1; gbc.gridy = 0; gbc.gridwidth = 2; gbc.fill = java.awt.GridBagConstraints.BOTH; ce.setPreferredSize(new java.awt.Dimension( (int)((panel.getWidth()/4) * 1.5), panel.getHeight()/4)); panel2.add(ce, gbc); gbc.gridx = 3; gbc.gridy = 0; gbc.gridwidth = 2; gbc.fill = java.awt.GridBagConstraints.BOTH; sum.setPreferredSize(new java.awt.Dimension((int)((panel.getWidth()/4) * 1.5), panel.getHeight()/4)); panel2.add(sum, gbc); gbc.gridx = 0; gbc.gridy = 2; gbc.fill = java.awt.GridBagConstraints.BOTH; getContentPane().add(panel2, gbc); pack(); addWindowListener(new java.awt.event.WindowAdapter() { public void windowClosing(java.awt.event.WindowEvent evt) { exitForm(evt); } }); } private void exitForm(java.awt.event.WindowEvent evt) { System.exit(0); } public void actionPerformed(ActionEvent ae){ if (ae.getSource() == multipl){ double tal1 = Double.parseDouble(input.getText()); tegn = "*"; input.setText(""); } if (ae.getSource() == divider){ double tal1 = Double.parseDouble(input.getText()); tegn = "/"; input.setText(""); } if (ae.getSource() == plus){ double tal1 = Double.parseDouble(input.getText()); tegn = "+"; input.setText(""); } if (ae.getSource() == minus){ double tal1 = Double.parseDouble(input.getText()); tegn = "-"; input.setText(""); } if (ae.getSource() == plusMinus){ tal1 = Double.parseDouble(input.getText()); tegn = "-"; tal1 = tegn + tal1; input.setText(""); } } public static void main(String args[]) { new JFrame_1().show(); } private JButton[] knap; private JButton komma; private JButton plusMinus; private JButton multipl; private JButton divider; private JButton plus; private JButton minus; private JButton c; private JButton ce; private JButton sum; private JPanel panel, panel2; private JTextField input; private Double tal1; private String tegn; } }
Annonceindlæg fra Computerworld
26. februar 2004 - 10:21
#1
Jeg tror at: tal1 = tegn + tal1; skal være: tal1 = -tal1;
26. februar 2004 - 10:22
#2
Det er fortegn minus/plus ik? /* if (ae.getSource() == plusMinus){ tal1 = Double.parseDouble(input.getText()); tegn = "-"; tal1 = tegn + tal1; input.setText(""); */ Denne linie "tal1 = tegn + tal1;" tager du en int og klister en streng på, og prøver at sætte det lig med int - hvilket ikke går godt. Du kunne måske gøre noget lignende.. if (ae.getSource() == plusMinus){ tal1 = Double.parseDouble(input.getText()); tegn = "-"; tal1 = Double.parseDouble( tegn + tal1 ); input.setText("");
26. februar 2004 - 10:58
#3
if (ae.getSource() == plusMinus){ tal1 = Double.parseDouble(input.getText()); tegn = "-"; tal1 = Double.parseDouble( tegn + tal1 ); input.setText(""); Virker ikke helt den siger incompatible type
26. februar 2004 - 11:03
#4
hvilken type er tal1???
26. februar 2004 - 11:09
#5
Det er ikke noget det skal bare være der
26. februar 2004 - 11:16
#6
Følgende virker hos mig... if (ae.getSource() == plusMinus){ double tal1 = Double.parseDouble(input.getText()); String tegn = "-"; tal1 = Double.parseDouble( tegn + tal1 ); input.setText("");
26. februar 2004 - 11:57
#7
Jeg mener stadig at det er: if (ae.getSource() == plusMinus){ double tal1 = Double.parseDouble(input.getText()); tal1 = -tal1; input.setText(Double.toString(tal1)); } du vil !
26. februar 2004 - 11:59
#8
Resultatet er det samme...
26. februar 2004 - 12:16
#9
For det første er det unødvendigt dyrt at konvertere fra tal til tekst og tilbage igen. For det andet virker det kun halvt. parseDouble af --123 giver en NumberFormatException !
26. februar 2004 - 12:26
#10
godt så..
28. februar 2004 - 12:44
#11
Noget modificeret kode: import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.util.*; public class JFrame_1 extends javax.swing.JFrame implements ActionListener { private JButton[] knap; private JButton komma; private JButton plusMinus; private JButton multiply; private JButton divide; private JButton plus; private JButton minus; private JButton c; private JButton ce; private JButton sum; private JPanel panel, panel2; private JTextField input; private Double tal1; private String tegn; private double acc; public JFrame_1() { setTitle("Regnemaskine"); setResizable(false); initComponents(); } private void initComponents() { getContentPane().setLayout(new GridBagLayout()); GridBagConstraints gbc = new GridBagConstraints(); knap = new JButton[10]; for (int i = 0; i < 10; i++) { knap[i] = new JButton(Integer.toString(i)); knap[i].addActionListener(this); } input = new JTextField(15); input.setHorizontalAlignment(SwingConstants.RIGHT); gbc.gridx = 0; gbc.gridy = 0; gbc.fill = GridBagConstraints.BOTH; getContentPane().add(input, gbc); panel = new JPanel(); panel.setLayout(new GridLayout(4, 4)); gbc.gridx = 0; gbc.gridy = 1; gbc.fill = java.awt.GridBagConstraints.BOTH; getContentPane().add(panel, gbc); komma = new JButton(","); komma.addActionListener(this); plusMinus = new JButton("+/-"); plusMinus.addActionListener(this); multiply = new JButton("*"); multiply.addActionListener(this); divide = new JButton("/"); divide.addActionListener(this); plus = new JButton("+"); plus.addActionListener(this); minus = new JButton("-"); minus.addActionListener(this); c = new JButton("C"); c.addActionListener(this); ce = new JButton("CE"); ce.addActionListener(this); sum = new JButton("="); sum.addActionListener(this); panel.add(knap[7]); panel.add(knap[8]); panel.add(knap[9]); panel.add(divide); panel.add(knap[4]); panel.add(knap[5]); panel.add(knap[6]); panel.add(multiply); panel.add(knap[1]); panel.add(knap[2]); panel.add(knap[3]); panel.add(minus); panel.add(knap[0]); panel.add(komma); panel.add(plusMinus); panel.add(plus); panel2 = new JPanel(); panel2.setLayout(new GridBagLayout()); pack(); gbc.gridx = 0; gbc.gridy = 0; gbc.fill = GridBagConstraints.BOTH; c.setPreferredSize(new Dimension(panel.getWidth() / 4, panel.getHeight() / 4)); panel2.add(c, gbc); gbc.gridx = 1; gbc.gridy = 0; gbc.gridwidth = 2; gbc.fill = GridBagConstraints.BOTH; ce.setPreferredSize(new Dimension((int) ((panel.getWidth() / 4) * 1.5), panel.getHeight() / 4)); panel2.add(ce, gbc); gbc.gridx = 3; gbc.gridy = 0; gbc.gridwidth = 2; gbc.fill = GridBagConstraints.BOTH; sum.setPreferredSize(new Dimension((int) ((panel.getWidth() / 4) * 1.5), panel.getHeight() / 4)); panel2.add(sum, gbc); gbc.gridx = 0; gbc.gridy = 2; gbc.fill = GridBagConstraints.BOTH; getContentPane().add(panel2, gbc); tegn = " "; acc = 0; pack(); addWindowListener(new java.awt.event.WindowAdapter() { public void windowClosing(java.awt.event.WindowEvent evt) { exitForm(evt); } }); } private void exitForm(java.awt.event.WindowEvent evt) { System.exit(0); } public void actionPerformed(ActionEvent ae) { if (ae.getSource() == multiply) { update(); tegn = "*"; input.setText(""); } else if (ae.getSource() == divide) { update(); tegn = "/"; input.setText(""); } else if (ae.getSource() == plus) { update(); tegn = "+"; input.setText(""); } else if (ae.getSource() == minus) { update(); tegn = "-"; input.setText(""); } else if (ae.getSource() == plusMinus) { double tal1 = Double.parseDouble(input.getText()); tal1 = -tal1; input.setText(Double.toString(tal1)); } else if (ae.getSource() == komma) { input.setText(input.getText() + "."); } else if (ae.getSource() == ce) { input.setText(""); acc = 0; } else if (ae.getSource() == c) { input.setText(""); } else if (ae.getSource() == sum) { update(); tegn = " "; input.setText(Double.toString(acc)); } else { for(int i = 0; i < 10; i++) { if(ae.getSource() == knap[i]) { input.setText(input.getText() + i); } } } } private void update() { if(tegn.equals(" ")) { acc = Double.parseDouble(input.getText()); } else if(tegn.equals("+")) { acc += Double.parseDouble(input.getText()); } else if(tegn.equals("-")) { acc -= Double.parseDouble(input.getText()); } else if(tegn.equals("*")) { acc *= Double.parseDouble(input.getText()); } else if(tegn.equals("/")) { acc /= Double.parseDouble(input.getText()); } } public static void main(String args[]) { new JFrame_1().show(); } }
Kurser inden for grundlæggende programmering