字符出现次数统计直方图-Java实现
2016-11-06 20:51
741 查看
开发一个程序显示一个直方图,它显示文本区域中每个字母出现的次数。每个字母用一种颜色标识。如下图所示:
初始界面:
输入字符:
显示结果:
代码实现:
一,HistogramBarChart类用于实现绘制直方图
二,HistogramTask类,实现程序的动作监听部分
三,Frame
初始界面:
输入字符:
显示结果:
代码实现:
一,HistogramBarChart类用于实现绘制直方图
import java.awt.Color; import java.awt.Graphics; import javax.swing.JPanel; public class HistogramBarChart extends JPanel{ private double[] dataValue={200,140,100,60,40}; private String[] dataName = {"CS", "Math", "Chem", "Biol", "Phys"}; private Color[] colors = {Color.red, Color.yellow, Color.green, Color.blue, Color.cyan, Color.magenta, Color.orange, Color.pink, Color.darkGray}; @Override protected void paintComponent(Graphics g) { super.paintComponent(g); if(dataValue==null)return; double max=dataValue[0]; for(int i=1;i<dataValue.length;++i) max=Math.max(max, dataValue[i]); int barWidth = (int)((getWidth() - 20.0)/dataValue.length - 10); int maxBarHeight = getHeight() - 30; g.drawLine(5, getHeight()-10, getWidth()-5, getHeight()-10); int x=15; for(int i=0;i<dataValue.length;++i) { g.setColor(colors[i%colors.length]); int newHeight=(int)(maxBarHeight*dataValue[i]/max); int y=getHeight()-10-newHeight; g.fillRect(x, y, barWidth, newHeight); g.setColor(Color.black); if((dataName!=null)&&(i<dataName.length)) g.drawString(dataName[i], x, y-7); x+=barWidth+10; } } public void setData(String[] dataName,double[] dataValue) { this.dataName=dataName; this.dataValue=dataValue; repaint(); } public HistogramBarChart() { } }
二,HistogramTask类,实现程序的动作监听部分
import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTextArea; public class HistogramTask extends JPanel{ private JTextArea jta; private JButton jbtShow=new JButton("Show Histogram"); private HistogramBarChart histogram=new HistogramBarChart(); private JFrame histogramPanel=new JFrame(); public HistogramTask() { JScrollPane scrollPane=new JScrollPane(jta=new JTextArea()); scrollPane.setPreferredSize(new Dimension(300, 200)); jta.setWrapStyleWord(true); jta.setLineWrap(true); setLayout(new BorderLayout()); add(scrollPane,BorderLayout.CENTER); add(jbtShow, BorderLayout.SOUTH); jbtShow.addActionListener(new Listener()); } class Listener implements ActionListener{ public void actionPerformed(ActionEvent e) { int count[]=countLetters(); double[] data=new double[26]; for(int i=0;i<26;++i) data[i]=count[i]; String[] letters=new String[26]; for(int i=0;i<26;++i) letters[i]=""+(char)('A'+i); histogram.setData(letters, data); histogram.repaint(); histogramPanel.add(histogram); histogramPanel.pack(); histogramPanel.setSize(400, 200); histogramPanel.setLocationRelativeTo(null); histogramPanel.setTitle("Bar Chart"); histogramPanel.setVisible(true); histogramPanel.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } private int[] countLetters() { int[] count=new int[55]; String text=jta.getText().trim(); for(int i=0;i<text.length();++i) { char character=text.charAt(i); if((character>='A')&&(character<='Z')) count[(int)character-65]++; else if((character>='a')&&(character<='z')) count[(int)character-95]++; } return count; } } }
三,Frame
import javax.swing.JFrame; public class MainFrame extends JFrame private HistogramTask panel=new HistogramTask(); public MainFrame() { add(panel); } public static void main(String[] args) { MainFrame frame=new MainFrame(); frame.setSize(400, 200); frame.setTitle("直方图"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setLocationRelativeTo(null); frame.setVisible(true); } }
相关文章推荐
- java实现统计输入一行string中统计其中各个字符出现的次数
- java统计字符串中的字符重复的次数和和出现次数 实例(输入字符串)
- 字典树-大量字符串前缀及出现次数是否存在统计(Trie树-java)算法实现
- Java实现 统计单词出现的次数并按照单词频率从高到低输出
- Java实现统计一篇文章中每个单词出现的次数
- JS实现找到某字符串中出现次数最多的字符,并统计次数
- java实现读取一篇英文文章,统计其中每个单词出现的次数并排序输出
- Java实现给定任一字符串,长度为任意,要求找出其出现次数最多的字符及其出现次数。
- 一个字符串中出现次数最多的字符 统计这个次数【实现代码】
- java统计中文字符出现次数
- linux实现针对文本统计字母出现的次数(所有的可打印的字符)
- 【小程序】JAVA实现从10~50中随机生成50个数,统计出现的数字及次数,输出出现最多的次数及对应的数字,按数字升序排列。
- java基础—统计一个字符串中各个字符出现的次数
- java统计字符串中重复字符出现次数的方法
- Java实现统计福彩双色球出现次数(毫无技术可言)
- java源码——统计字符串中字符出现的次数
- Java统计字符串中出现次数最多的字符及其次数
- Java实现统计某字符串在另一个字符串中出现的次数
- Java小程序:字符串中,统计每个字符出现的次数
- Java基础知识强化之集合框架笔记61:Map集合之统计字符串中每个字符出现的次数的案例