• Log in or sign up for an account here: https://www.sythe.org/login

Program help

Fate1

Apprentice
Banned
Joined
Apr 21, 2005
Sythe Gold
5
Messages
773
Age
34
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);
		}
    }
}
 
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.
 
Runescape Gamblingrunescape gambling
Back
Top