java 练习

?
?
import java.io.*;public class CharCounter{private int[] charcount = new int[26];Chart chart;public CharCounter(String filename){BufferedReader br = null;try{ br = new BufferedReader(new FileReader(filename)); String str=null; while((str=br.readLine())!=null){str=str.toUpperCase();for(int i =0,length = str.length();i<length;i++){char ch = str.charAt(i);int index = ch-'A'; //A-0,B-1....if(index>=0 && index <= 25)charcount[index]++;} } br.close(); chart = new Chart(new String[]{"A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"},charcount,"*");}catch(Exception e){e.printStackTrace();}}public void plainOut(){chart.plainOut();}public void horizontalOut(){chart.horizontalOut();}public void verticalOut(){chart.verticalOut();}public static void main(String[] args){ // new CharCounter("input.txt").horizontalOut(); new CharCounter("input.txt").verticalOut();//new CharCounter("input.txt").plainOut();}}class Chart{private String[] label;private int[] data;private String style;private RotateArray ra ;public Chart(String[] label,int[] data,String style){this.label = label;this.data = data;this.style = style;fillData();}public void fillData(){int max = max(data);String[][] str = new String[data.length][max+2];for(int i =0,len = data.length;i<len;i++){for(int j =0;j< max+2;j++){if(j>0&& j<data[i])str[i][j] = style;else str[i][j] = " ";}str[i][0] = label[i];str[i][max+1] = ""+data[i];}ra = new RotateArray(str);}public static String multi(String s,int rate){String str ="" ;for(int i =0;i<rate;i++){str+=s;}return str;}public static int max(int[] data){int max = data[0];for(int i =1,len = data.length;i<len;i++){if(max<data[i])max=data[i];}return max;}public void plainOut(){for(int i =0;i<label.length;i++){System.out.println(label[i]+":"+data[i]);}}public void horizontalOut(){out(ra.get());}public void verticalOut(){out(ra.rotate(-1).get());}public void out(String[][] a){for(int i =0;i<a.length;i++){for(int j =0;j<a[i].length;j++){System.out.print(a[i][j]+multi(" ",1));}System.out.println();}}}class RotateArray{private String[][] original ;private String[][] rotatedArray ;public RotateArray(String[][] a){this.original = a;}public RotateArray rotate(int rate){ for(int i =0,len =rate>=0? rate%4:rate%4+4;i<len;i++){rotate();}return this;}public RotateArray rotate(){int rows = rotatedArray==null?original[0].length:rotatedArray[0].length;int cols = rotatedArray==null?original.length:rotatedArray.length;String[][] temp = new String[rows][cols];for(int i =0,len = temp.length;i<len;i++){for(int j =0,len2 = temp[i].length;j<len2;j++){if(rotatedArray!=null)temp[i][j] = rotatedArray[len2-1-j][i];else temp[i][j] = original[len2-1-j][i];}}rotatedArray = temp;return this;}public String[][] get(){return rotatedArray!=null?rotatedArray:original;}}?