一个、叙述性说明

1、输入一行字符。在这些信件统计、空格、出现频率的数字和其他字符的总数和每一个字符。

        程序分析:使用String类的matchs()分别统计符合正則表達式的每类字符的总个数,然后分别使用List和Map集合类统计每一个字符出现的频率。

2、求s=a+aa+aaa+aaaa+aa...a的值,当中a是一个数字。

比如2+22+222+2222+22222(此时共同拥有5个数相加)。几个数相加由键盘控制。

3、题目:一个数假设恰好等于它的因子之和,这个数就称为"完数",即除了本身以外的不反复因数和等于其本身。

编程找出m以内的全部完数。

比如6=1+2+3.第二个全然数是28,它有约数1、2、4、7、14、28,除去它本身28外。其余5个数相加,1+2+4+7+14=28。

首先求出全部质因数,然后推断相加和是否等于原数。

二、源码

1、程序1

package tong.yue.hong;





import java.util.ArrayList;

import java.util.Collections;

import java.util.HashMap;

import java.util.Iterator;

import java.util.List;

import java.util.Map;

import java.util.Scanner;

import java.util.Set;





/**

 * 输入一行字符。分别统计出当中英文字母、空格、数字和其他字符的总个数和每一个字符出现的频率。

程序分析:使用String类的matchs()分别统计符合正則表達式的每类字符的总个数。然后分别使用List和Map集合类统计每一个字符出现的频率

 * @author tong

 *

 */





public class Statistics {





public static void main(String[] args) {

Scanner scanner = new Scanner(System.in);

System.out.println("请输入一行字符串:");

String string = scanner.nextLine();

scanner.close();

count(string);


System.out.println("-------------");

countEveryOneByList(string);

System.out.println("-------------");

countEveryOneByMap(string);

}





/**

* 定义几种类型字符的正則表達式,而且使用String类的matchs()方法匹配每类字符的个数

* @param str

*/

private static void count(String str){

//定义四个正則表達式分别表示各类字符

String E1 = "[\u4e00-\u9fa5]"; //汉字

String E2 = "[a-zA-Z]";    //中英文字母

String E3 = "[0-9]";
//数字

String E4 = "\\s";//空格

//分别定义五个统计变量,分别统计各类字符的总个数

int countChinese = 0;

int countLetter = 0;

int countNumber = 0;

int countSpace = 0;

int countOther = 0;



//将字符串转化为字符数组

char[] array_Char = str.toCharArray();

//由于汉字仅仅能作为字符串处理,所以定义字符串数组来存放全部字符

String[] array_String = new String[array_Char.length];

//将字符数组转换为字符串数组

for(int i=0;i<array_Char.length;i++){

 array_String[i] = String.valueOf(array_Char[i]);

}

//遍历字符串数组中的元素。统计各类字符总个数

for(String s:array_String){

if(s.matches(E1))

 countChinese++;

else if(s.matches(E2))

 countLetter++;

else if(s.matches(E3))

 countNumber++;

else if(s.matches(E4))

 countSpace++;

else

 countOther++;

}

System.out.println("输入的汉字个数:"+countChinese);

System.out.println("输入的字母个数:"+countLetter);

System.out.println("输入的数字个数:"+countNumber);

System.out.println("输入的空格个数:"+countSpace);

System.out.println("输入的其他字符个数:"+countSpace);

}







/**

* 使用List集合统计单个字符的个数

* @param str

*/

private static void countEveryOneByList(String str){

List<String> list = new ArrayList<String>();

char[] array_Char = str.toCharArray();

for(char c:array_Char){

//将字符作为字符串加入到list表中

   list.add(String.valueOf(c));

}

//调用Collections集合工具类将list类中的数据进行排序。同样的元素就排在相邻的位置

Collections.sort(list);//排序

//遍历排序后的集合,依据同样的值在List中第一次出现的位置和最后一次出现的位置就能计算出该字符串的总个数

for(String s:list){

//该字符串第一次出现的索引

int begin = list.indexOf(s);

//该字符串最后一次出现的索引,由于同样元素相邻,就可以得出个数

int end = list.lastIndexOf(s);

//索引结束统计字符数

if(list.get(end)==s){

 System.out.print("字符'"+s+"'有"+(end-begin+1)+"个");

}

}

}



/**

* 使用Map集合类统计字符串出现的次数。以该字符串作为键,以出现的次数作为值,循环遍历就可以

* @param str

*/

private static void countEveryOneByMap(String str){

//创建HashMap对象来存放字符串数组及其出现的次数

Map<String,Integer> hashMap = new HashMap<String,Integer>();

char[] array_Char = str.toCharArray();



for(char c:array_Char){

String key = String.valueOf(c);

//假设已经出现过该字符串就将该字符串的value加1

if (hashMap.containsKey(key)) {

Integer value = hashMap.get(key)+1;

hashMap.put(key, value);

}else {

//假设该字符串是第一次出现。就将该字符串及其出现的次数加入到hashMap中

hashMap.put(key, 1);

}



}

//遍历hashMap集合,输出结果

Set<Map.Entry<String, Integer>> sets = hashMap.entrySet();

for (Map.Entry<String, Integer> mapEntry :sets) {

System.out.println("字符'"+mapEntry.getKey()+"'有"+mapEntry.getValue()+"个");

}



}

}

执行结果:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdG9uZ3l1ZWhvbmcxMzc=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="统计字符个数">

2、程序2

package tong.yue.hong;





import java.util.Scanner;





import javax.xml.transform.Templates;





/**

 * 题目:求s=a+aa+aaa+aaaa+aa...a的值,当中a是一个数字。

 * 比如2+22+222+2222+22222,由键盘控制相加的次数,输入多少个数据进行相加

 * @author tong

 *

 */

public class SumOneNum {





public static void main(String[] args) {



String E3 = "[0-9]";

Scanner scanner = new Scanner(System.in);

System.out.println("请输入一个0-9的数字:");


String num = scanner.next();

while (!num.matches(E3)) {

System.out.println("您输入的数字有误。请又一次输入:");

num = scanner.next();

}

System.out.println("请输入要相加的数据个数:");

String times = scanner.next();

while (!times.matches(E3)) {

System.out.println("您输入的数字有误,请又一次输入:");

times = scanner.next();

}

scanner.close();

//方法1直接是依据字符串拼接规律和数字变化规律相加求和

mulAdd(num,times);

//方法2使用StringBuffer进行前面显示的字符串的拼接。用add方法将数字累加

System.out.println(expressed(num,times)+add(num,times));

}

/**

* 确定源数据的变化规律,依据规律number =number*10+number%10进行变化。并更加相加次数进行相加

* @param num

* @param times

*/

private static void mulAdd(String num, String times) {

//String转换为int

int number = Integer.parseInt(num);

long sum = 0;

int temp = 0;

for (int i = 1; i <= Integer.parseInt(times); i++) {


//数据每次变化的规律

temp =temp*10+number;

sum +=temp;


//若为不是最后一次相加,就输出加号

if (i<Integer.parseInt(times)) {


System.out.print(temp+"+");


}else {

System.out.print(temp+"=");

}

}

System.out.println(sum);



}



//用StringBuffer输出前面的数字连续相乘的字符串表达式

private static String expressed(String num,String times){

StringBuffer sb = new StringBuffer();

StringBuffer subSB = new StringBuffer();

for(int i=1;i<=Integer.parseInt(times);i++){

 subSB = subSB.append(num);

 sb = sb.append(subSB);

 if(i<Integer.parseInt(times))

   sb = sb.append("+");

}

sb.append("=");

return sb.toString();

}



//输出连续数字累加和

private static long add(String num,String times){

Integer a = Integer.parseInt(num);

long sum = 0;

long subSUM = 0;

for(int i=1;i<=Integer.parseInt(times);i++){

subSUM = subSUM*10+a;

sum = sum+subSUM;

}

return sum;

}

}

执行结果:

3、程序3

package tong.yue.hong;





import java.util.Scanner;

/*

 * 题目:一个数假设恰好等于它的因子之和,这个数就称为"完数",即除了本身以外的不反复因数和等于其本身。编程找出m以内的全部完数。

 * 比如6=1+2+3.第二个全然数是28,它有约数1、2、4、7、14、28,除去它本身28外,其余5个数相加,1+2+4+7+14=28。

* 首先求出全部质因数,然后推断相加和是否等于原数

 */





public class NumberSpec {





public static void main(String[] args) {

System.out.println("请输入一个大于0小于等于10000的正整数表示完数的范围(>0):");

Scanner scanner = new Scanner(System.in);

int scale = scanner.nextInt();

while (scale<0||scale>10000) {

System.out.println("您的输入有误。请又一次输入一个大于0小于等于10000的正整数表示完数的范围(>0):");

scale = scanner.nextInt();

}

compNumber(scale);


}



private static void compNumber(int n){


System.out.println(n+"以内的完数:");

for(int i=1;i<=n;i++){

int sum = 0;

for(int j=1;j<i/2+1;j++){

if((i%j)==0){

sum += j;


}



}

if(sum==i){

 System.out.print(i+" ");
 

   }

}

}







}

执行结果:

版权声明:本文博客原创文章,博客,未经同意,不得转载。

JAVA基本的编程50称号(7-9称号)详细解释的更多相关文章

  1. Classpath in jar关于java加载第三方jar的集中方法和详细解释。

    转载地址:http://www.iteye.com/topic/332580 大家都知道一个java应用项目可以打包成一个jar,当然你必须指定一个拥有main函数的main class作为你这个ja ...

  2. Java经典逻辑编程50题

    Java经典逻辑编程50题 2016-11-03 09:29:28      0个评论    来源:Alias_fa的博客    收藏   我要投稿 [程序1] 題目:古典问题:有一对兔子,从出生后第 ...

  3. JAVA的网络编程

    网络编程 网络编程对于很多的初学者来说,都是很向往的一种编程技能,但是很多的初学者却因为很长一段时间无法进入网络编程的大门而放弃了对于该部分技术的学习. 在 学习网络编程以前,很多初学者可能觉得网络编 ...

  4. 【转】JAVA之网络编程

    转自:火之光 网络编程 网络编程对于很多的初学者来说,都是很向往的一种编程技能,但是很多的初学者却因为很长一段时间无法进入网络编程的大门而放弃了对于该部分技术的学习. 在 学习网络编程以前,很多初学者 ...

  5. JAVA的网络编程【转】

    JAVA的网络编程[转] Posted on 2009-12-03 18:04 火之光 阅读(93441) 评论(20) 编辑 收藏 网络编程 网络编程对于很多的初学者来说,都是很向往的一种编程技能, ...

  6. 点评阿里JAVA手册之编程规约(OOP 规约 、集合处理 、并发处理 、其他)

    下载原版阿里JAVA开发手册  [阿里巴巴Java开发手册v1.2.0] 本文主要是对照阿里开发手册,注释自己在工作中运用情况. 本文难度系数为三星(★★★) 本文为第二篇 第一篇 点评阿里JAVA手 ...

  7. 【Socket】Java Socket基础编程

    Socket是Java网络编程的基础,了解还是有好处的, 这篇文章主要讲解Socket的基础编程.Socket用在哪呢,主要用在进程间,网络间通信.本篇比较长,特别做了个目录: 一.Socket通信基 ...

  8. Java 多线程并发编程一览笔录

    Java 多线程并发编程一览笔录 知识体系图: 1.线程是什么? 线程是进程中独立运行的子任务. 2.创建线程的方式 方式一:将类声明为 Thread 的子类.该子类应重写 Thread 类的 run ...

  9. java基础—GUI编程(一)

    一.AWT介绍

随机推荐

  1. 第七章——DMVs和DMFs(4)——用DMV和DMF监控磁盘IO

    原文:第七章--DMVs和DMFs(4)--用DMV和DMF监控磁盘IO 前言: 本文为本系列最后一篇,作为DBA,你必须经常关注磁盘的I/O问题,一旦出现问题,要尽快分析出是什么问题.SQLServ ...

  2. Python补充04 Python简史

    原文:Python简史 作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! Python是我喜欢的语言,简洁,优美,容易使用.前两天, ...

  3. MapXtreme DJ最短路径算法 全路径搜索算法

    包括最短路径,全路径搜索算法演示程序请在http://pan.baidu.com/s/1jG9gKMM#dir/path=%2F%E4%BA%A7%E5%93%81%2FDemos 找 ShortWa ...

  4. mvc与My97DatePicker插件的结合

    Razor视图引擎与My97DatePicker插件的结合 1 using System; 2 using System.Collections.Generic; 3 using System.Run ...

  5. Android Drawable绘图学习笔记(转)

    如何获取 res 中的资源 数据包package:android.content.res 主要类:Resources Android SDK中的简介:Class for accessing an ap ...

  6. (大数据工程师学习路径)第四步 SQL基础课程----SQL介绍及mysql的安装

    一.数据库和SQL介绍 数据库(Database)是按照数据结构来组织.存储和管理数据的仓库,它的产生距今已有六十多年.随着信息技术和市场的发展,数据库变得无处不在:它在电子商务.银行系统等众多领域都 ...

  7. mybatis型材xxxx.xml缺少后果返回类型

    下面是一个mybatis型材xxxx.xml失踪resultMap错误: 严重: Servlet.service() for servlet [SpringMVC] in context with p ...

  8. 解决 TortoiseGit 诡异的 Bad file number 问题(转)

    问题描述 昨天,以及今天(2014-11-29),使用 TortoiseGit 时碰到了一个诡异的问题. 卸载,清理注册表,重装,重启,各种折腾以后,还是不能解决. 但是23.45分一过,突然灵光一闪 ...

  9. Theano学习笔记(三)——图结构

    图结构(Graph Structures)这是理解Theano该基金会的内部运作. Theano编程的核心是用符号占位符把数学关系表示出来. 图结构的组成部分 如图实现了这段代码: importthe ...

  10. JQUERY 选择

    jQuery 选择器 jQuery 采用 CSS 一个选择选择 HTML 元素. $("p") 选取 <p> 元素. $("p.intro") 选取 ...