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;
}
}
- 大小: 43.6 KB
- 大小: 35.1 KB
分享到:
相关推荐
50java小练习 java小练习,Java练习小程序,Java必用
java练习小项目 城市人口 无限级
40道java练习,弄懂了java基础就算过关了
Java 练习题附答案
精心整理,数百道java练习题集合;大部分带参考答案,适合想加深java基础的人学习
奶爸原创Java练习助手,总结了810道练习题,涵盖了JavaSE方面的所有基础知识:每天坚持练100题,一个月就可以熟练掌握JavaSE方面的知识点,都是最基本,必须会的题,都是问答题,没有选择题,编程就必须不断的敲代码...
JAVA 练习,小游戏!JAVA 练习,小游戏!JAVA 练习,小游戏! JAVA 练习,小游戏!JAVA 练习,小游戏!JAVA 练习,小游戏! JAVA 练习,小游戏!JAVA 练习,小游戏!JAVA 练习,小游戏! JAVA 练习,小游戏!JAVA ...
JAVA 练习题 30章 循序渐进的30章练习 适合初学者
我做过的经典java练习题我做过的经典java练习题我做过的经典java练习题
Java练习50道Java练习50道Java练习50道Java练习50道Java练习50道Java练习50道Java练习50道Java练习50道Java练习50道Java练习50道Java练习50道Java练习50道
java练习时写的贪吃蛇战程序,java新手可以研究下代码,画面并没有处理的很绚丽,但是操作没问题
Thinking in Java 4Edition 练习题答案
java练习题(2020级).pdf
Annotated Solution Guide for TIJ4.pdf。Thinking in java 练习题答案。
Thinking In Java 练习题答案 (第四版) 配套答案,学习大师的编程思想
java经典练习题-Java 的核心 API
自己的一个Java练习程序 自己的一个Java练习程序 v自己的一个Java练习程序 自己的一个Java练习程序 自己的一个Java练习程序 自己的一个Java练习程序
30道java练习题,包括for循环练习题,do...while练习题,switch...case练习题等...