All pastes #1806336 Raw Edit

Exp to Level RuneScape function

public java v1 · immutable
#1806336 ·published 2010-02-23 03:16 UTC
rendered paste body
	private static final int[] levelExps = {0, 83, 174, 276, 388, 512, 650, 801, 969, 1154, 1358, 1584, 1833, 2107, 2411, 2746, 3115, 3523, 3973, 4470, 5018, 5624, 6291, 7028, 7842, 8740, 9730, 10824, 12031, 13363, 14833, 16456, 18247, 20224, 22406, 24815, 27473, 30408, 33648, 37224, 41171, 45529, 50339, 55649, 61512, 67983, 75127, 83014, 91721, 101333, 111945, 123660, 136594, 150872, 166636, 184040, 203254, 224466, 247886, 273742, 302288, 333804, 368599, 407015, 449428, 496254, 547953, 605032, 668051, 737627, 814445, 899257, 992895, 1096278, 1210421, 1336443, 1475581, 1629200, 1798808, 1986068, 2192818, 2421087, 2673114, 2951373, 3258594, 3597792, 3972294, 4385776, 4842295, 5346332, 5902831, 6517253, 7195629, 7944614, 8771558, 9684577, 10692629, 11805606, 13034431};	/**	 * Determines the level attained in a skill by a player with the given	 * amount of EXP in it.	 * 	 * @param exp	 *            EXP gained in a skill by a player.	 * @return The level attained in a skill by a player having gained the given	 *         number of EXP points in it.	 * @throws IllegalArgumentException	 *             if the given <code>exp</code> is unattainable in RuneScape;	 *             more formally, if <code>exp &lt; 0</code>	 */	public static byte levelOfExp(int exp) {		if (exp < 0)			throw new IllegalArgumentException("invalid exp: " + exp);		if (exp >= levelExps[98])			return 99;		else {			byte start = 0, end = 97, middle = 48;			while (start <= end) {				if (exp < levelExps[middle])					end = (byte) (middle - 1);				else if (exp >= levelExps[middle + 1])					start = (byte) (middle + 1);				else					return (byte) (middle + 1);				middle = (byte) ((start + end) / 2);			}			return 1; // To satisfy the compiler... Should never get here		}	}