The Java version of the script
// Level Chart // import java.text.*; public class levels { public static String[] getHeader() { String[] header = new String[2]; header[0] = "Char\t \tClass Skill\tCC Skill\t \tStat\t"; header[1] = "Level\tXP\tMax Ranks\tMax Ranks\tFeats\tIncreases\t"; return header; } public static String level_th(String s_input) { String level_th; int second_digit = s_input.length(); if ( second_digit > 1 ) { second_digit = second_digit - 2; } if ( s_input.endsWith("1") ) { level_th = s_input + "st"; } else if ( s_input.endsWith("2") ) { level_th = s_input + "nd"; } else if ( s_input.endsWith("3") ) { level_th = s_input + "rd"; } else { level_th = s_input + "th"; } String s_check = s_input.substring(second_digit); if ( s_check.equals("11") || s_check.equals("12") || s_check.equals("13") ) { level_th = s_input + "th"; } return level_th; } public static void main(String[] args) { // clear screen no idea if this works under windows System.out.print("\033c"); // My variables int Max = 40; String[] myheader = getHeader(); for (int i = 0; i < myheader.length; i++) { System.out.println(myheader[i]); } // Loop for levels for (int level = 1, xp = 0, feats = 0, stats = 0; level <= Max; level++) { // Calculate XP xp = (xp + ( level - 1) * 1000); // Calcualte Maxranks int maxranks = level + 3; // Calcualte Max Cross Class Ranks double maxcc = maxranks / 2.0; // Calculate Feats int s_feats = (level % 3); String out_feat = "--"; if ( s_feats == 0 || level == 1 ) { feats++; out_feat = level_th( String.valueOf(feats) ); } // Calculate Stat bouns int s_stat = ( level % 4); String out_stat = "--"; if ( s_stat == 0 ) { stats++; out_stat = level_th( String.valueOf(stats) ); } // Make level pretty String level_out = level_th( String.valueOf(level) ); //Print System.out.println( level_out + "\t" + xp + "\t" + maxranks + "\t\t" + maxcc + "\t\t" + out_feat + "\t" + out_stat); } } } // vi: shiftwidth=3 tabstop=3 et