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
分享到:
相关推荐
【Java练习小项目:城市人口管理系统】 在编程学习过程中,实践是提升技能的关键。这个"Java练习小项目"就是这样一个实战平台,旨在帮助Java初学者或爱好者加深对编程语言的理解,特别是面向对象的设计和数据结构的...
这份"Java练习题附答案"资源显然旨在帮助学习者提升他们的Java编程技能。以下是对这个主题的详细解析: 1. **基础语法**:Java的基础包括变量、数据类型、运算符、流程控制(如if语句,for和while循环)以及方法...
接下来,我们根据提供的文件内容详细解析Java练习题中所涉及的关键知识点。 1. Java语言的优点和特点之一是多线程,这允许Java程序能够并行执行多个任务。Java的多线程机制是Java语言的强大功能之一,它支持并发...
这个“初级Java练习项目”旨在帮助新手掌握Java的基础知识,并通过实际操作来提升编程技能。项目可能包括一系列小任务和挑战,旨在涵盖Java的核心概念,如变量、数据类型、控制流、函数、类和对象等。 1. **变量与...
在本Java练习中,我们将深入理解并实现Spring框架的核心组件——IoC(Inversion of Control,控制反转)容器。这个练习分为三个主要部分,旨在帮助我们掌握XML配置文件的读取,模拟Spring的IoC机制,以及对Struts...
本资料提供了30章循序渐进的Java练习题,旨在帮助初学者系统地学习和巩固Java编程技术。 第1章:基础语法 这一章涵盖了Java的基础语法,包括变量声明、数据类型(如整型、浮点型、字符型和布尔型)、运算符(如算术...
这里提到的“我做过的经典java练习题”可能是一个集合,包含了作者在学习Java过程中遇到的一些具有代表性的题目。这些题目可能涵盖了许多Java的基础知识,如语法、数据类型、控制结构、类与对象、异常处理、多线程、...
这个压缩包中的"Thinking In Java 练习题答案 第四版"文件,包含了上述所有主题的练习题解答,通过对照解答,读者可以检查自己的理解是否准确,对不理解的部分进行深入研究,从而巩固和深化Java编程技能。...
- **标题:** Thinking in java 练习题答案 - **知识点:** 1. **Thinking in Java(TIJ):** 是由Bruce Eckel所著的一本介绍Java编程语言的书籍。它被广泛认为是学习Java的权威指南之一,尤其适合初学者和中级...
《Core Java练习题与编程规范》 在Java编程的学习过程中,掌握Core Java是至关重要的一步。Core Java涵盖了语言基础、集合框架、IO流、多线程、网络编程等多个核心领域,是成为一名合格Java开发者的基石。本文将...
"小日历(java练习)"项目显然是一个用于学习和实践这些概念的实例,特别是关注日期的显示和换月功能。 1. **Java日期API基础**: 在Java 8之前,日期和时间处理主要依赖`java.util.Date`和`java.util.Calendar`类。...
这本书的练习题是学习Java的重要组成部分,因为它们能够帮助读者巩固理论知识并提升实践能力。以下是对"Thinking in Java 4Edition 练习题答案"的一些关键知识点的详细解释: 1. **基础语法**:在书中,读者会遇到...
Java练习系统是一款专为初学者设计的编程学习工具,它以Java语言为核心,涵盖了各种经典题型,旨在帮助用户通过实践提升Java编程技能。这款系统不仅提供了丰富的练习题目,还具有独特的功能,如每步得分显示,使得...
奶爸原创Java练习助手,总结了810道练习题,涵盖了JavaSE方面的所有基础知识:每天坚持练100题,一个月就可以熟练掌握JavaSE方面的知识点,都是最基本,必须会的题,都是问答题,没有选择题,编程就必须不断的敲代码...
JAVA 练习,小游戏!JAVA 练习,小游戏!JAVA 练习,小游戏! JAVA 练习,小游戏!JAVA 练习,小游戏!JAVA 练习,小游戏! JAVA 练习,小游戏!JAVA 练习,小游戏!JAVA 练习,小游戏! JAVA 练习,小游戏!JAVA ...
【标题】:“模仿蓝桥杯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代码示例。这些源码通常涵盖基础概念,如数据类型、控制结构、类与对象、异常处理等,同时也会涉及到更高级的主题,比如多线程、网络编程和数据库操作...