Program help

Discussion in 'Programming General' started by Fate1, Jan 10, 2010.

Program help
  1. Unread #1 - Jan 10, 2010 at 8:08 AM
  2. Fate1
    Joined:
    Apr 21, 2005
    Posts:
    773
    Referrals:
    2
    Sythe Gold:
    5

    Fate1 Apprentice
    Banned

    Program help

    Well I made a Combat Calculator for Runescape. It looks like it will run fine to me but I get this error.
    Code:
    Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: For input string: ""
        at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
        at java.lang.Integer.parseInt(Integer.java:468)
        at java.lang.Integer.parseInt(Integer.java:497)
        at RunescapeCalc.calculate(RunescapeCalc.java:100)
        at RunescapeCalc.actionPerformed(RunescapeCalc.java:92)
        at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1849)
        at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2169)
        at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:420)
        at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:258)
        at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
        at java.awt.Component.processMouseEvent(Component.java:5517)
        at javax.swing.JComponent.processMouseEvent(JComponent.java:3129)
        at java.awt.Component.processEvent(Component.java:5282)
        at java.awt.Container.processEvent(Container.java:1966)
        at java.awt.Component.dispatchEventImpl(Component.java:3984)
        at java.awt.Container.dispatchEventImpl(Container.java:2024)
        at java.awt.Component.dispatchEvent(Component.java:3819)
        at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4212)
        at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3892)
        at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3822)
        at java.awt.Container.dispatchEventImpl(Container.java:2010)
        at java.awt.Window.dispatchEventImpl(Window.java:1791)
        at java.awt.Component.dispatchEvent(Component.java:3819)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:463)
        at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:242)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:163)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:157)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:149)
        at java.awt.EventDispatchThread.run(EventDispatchThread.java:110)
    
    Here is my source:

    Code:
    /**
     * @(#)RunescapeCalc.java
     *
     * JFC RunescapeCalc application
     *
     * @author Fate
     * @version 1.00 2010/1/9
     */
    import java.awt.event.*;
    import java.awt.*;
    import javax.swing.*;
    
    public class RunescapeCalc extends JFrame implements ActionListener {
        
        public static void main(String[] args) {
            RunescapeCalc frame = new RunescapeCalc();
            frame.show();
        }
        JButton calculate = new JButton("Calculate");
        JButton exit = new JButton("Exit");
        JLabel attackLbl = new JLabel("Attack:");
        JLabel strLbl = new JLabel("Strength:");
        JLabel defLbl = new JLabel("Defense:");
        JLabel hpLbl = new JLabel("Hit Points:");
        JLabel rangeLbl = new JLabel("Range:");
        JLabel mageLbl = new JLabel("Magic: ");
        JLabel prayLbl = new JLabel("Prayer:");
        JLabel summonLbl = new JLabel("Summoning:");
        JLabel combatLbl = new JLabel("Combat: ");
        
        String attackStr = "";
        String strStr = "";
        String defStr = "";
        String hpStr = "";
        String rangeStr = "";
        String mageStr = "";
        String prayStr = "";
        String summonStr = "";
        String combatStr = "";
        
        JTextField attackTxt = new JTextField(attackStr,2);
        JTextField strTxt = new JTextField(strStr,2);
        JTextField defTxt = new JTextField(defStr,2);
        JTextField hpTxt = new JTextField(hpStr,2);
        JTextField rangeTxt = new JTextField(rangeStr,2);
        JTextField mageTxt = new JTextField(mageStr,2);
        JTextField prayTxt = new JTextField(prayStr,2);
        JTextField summonTxt = new JTextField(summonStr,2);
        JTextField combatTxt = new JTextField(combatStr,3);
        
        public RunescapeCalc() {
        	setTitle("Combat Calculator");
        	setResizable(false);
        	setDefaultCloseOperation(EXIT_ON_CLOSE);
        	setLayout(new FlowLayout());
        	
        	calculate.addActionListener(this);
        	exit.addActionListener(this);
        	
        	add(attackLbl);
        	add(attackTxt);
        	add(strLbl);
        	add(strTxt);
        	add(defLbl);
        	add(defTxt);
        	add(hpLbl);
        	add(hpTxt);
        	add(rangeLbl);
        	add(rangeTxt);
        	add(mageLbl);
        	add(mageTxt);
        	add(prayLbl);
        	add(prayTxt);
        	add(summonLbl);
        	add(summonTxt);
        	add(combatLbl);
        	add(combatTxt);
        	
        	add(calculate);
        	add(exit);
        	
        	combatTxt.setEnabled(false);
        	
        	setVisible(true);
        	pack();
        }
        
        public void actionPerformed(ActionEvent ae) {
        	Object source = ae.getSource();
        	
        	if(source.equals(calculate)) {
        		calculate();
        	}
        	if(source.equals(exit)) {
        		System.exit(0);
        	}
        }
        
        public void calculate() {
        	int attack = Integer.parseInt(attackStr);
        	int strength =Integer.parseInt(strStr);
        	int defense = Integer.parseInt(defStr);
        	int hp = Integer.parseInt(hpStr);
        	int range = Integer.parseInt(rangeStr);
        	int mage = Integer.parseInt(mageStr);
        	int prayer = Integer.parseInt(prayStr);
        	int summoning = Integer.parseInt(summonStr);
        	
        	int melee = (1/4)*((13/10)*(attack+strength)+defense+hp+(1/2)*prayer+(1/2)*summoning);
    		int rangeTtl = (1/4)*((13/10)*(3/2)*(range)+defense+hp+(1/2)*prayer+(1/2)*summoning);
    		int magicTtl = (1/4)*((13/10)*(3/2)*(mage)+defense+hp+(1/2)*prayer+(1/2)*summoning);
    		
    		if(melee > rangeTtl && melee > magicTtl) {
    			combatStr = Integer.toString(melee);
    			combatTxt.setText(combatStr);
    		}
    		else
    		if(rangeTtl > melee && rangeTtl > magicTtl) {
    			combatStr = Integer.toString(rangeTtl);
    			combatTxt.setText(combatStr);
    		}
    		else
    		if(magicTtl > melee && magicTtl > rangeTtl) {
    			combatStr = Integer.toString(magicTtl);
    			combatTxt.setText(combatStr);
    		}
        }
    }
    
     
  3. Unread #2 - Jan 10, 2010 at 12:51 PM
  4. Jimmy
    Joined:
    Jun 24, 2008
    Posts:
    2,421
    Referrals:
    10
    Sythe Gold:
    25

    Jimmy Ghost
    Retired Sectional Moderator $5 USD Donor

    Program help

    You never updated any of your Strings, so when you call the parseInt() method, it throws an Exception, as it cannot parse an int from the String "".

    Rather then creating all of those useless Strings, simply call the getText() method on the JTextField that you made.
     
< Problem For School - Finding Average | Programming Book Ratings and reveiws... >

Users viewing this thread
1 guest


 
 
Adblock breaks this site