`
jiashaoshan
  • 浏览: 9863 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java经典练习

阅读更多


package com.jia.mou;

import java.io.UnsupportedEncodingException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Lingxing {
	/**
	 * 数组a[m];b[n]都是已经排序好的数组(下面的程序是升序),要求合并成一个有序的数组c[m+n]
	 * 
	 * @param a
	 * @param b
	 * @return
	 */
	public static int[] sort(int[] a, int[] b) {
		int m = 0;
		int n = 0;
		int i = 0, j = 0;
		m = a.length;
		n = b.length;
		int[] c = new int[m + n];
		for (; i < m;) {
			for (; j < n;) {
				if (a[i] > b[j]) {
					c[i + j] = b[j];
					j++;
				} else {
					c[i + j] = a[i];
					i++;
					break;
				}
			}

			if (i == m - 1 && j < n - 1) {
				for (; j < n; j++) {
					c[i + j] = b[j];
				}
			}
			if (j == n - 1 && i < m - 1) {
				for (; i < m; i++) {
					c[i + j] = a[i];
				}
			}
		}

		// 打印c
		for (int k = 0; k < m + n; k++) {
			System.out.println("c[" + k + "]=" + c[k]);
		}
		return c;
	}

	/**
	 * 
	 * 题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。
	 * 程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:
	 * (1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。 (2)如果n <>
	 * k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n,重复执行第一步。
	 * (3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。
	 * 
	 * @param n
	 */
	public static void fenjie(int n) {
		System.out.print(n + "=1");
		int k = 2;
		if (n == 2) {
			System.out.print("*2");
		} else {
			while (n >= k) {
				if (n % k == 0) {
					System.out.print("*" + k);
					n = n / k;
				} else {
					k++;
				}
			}
		}
	}

	/**
	 * 获得随机日期
	 * 
	 * @param startDate
	 * @param endDate
	 * @return
	 */
	public static Date randomDate(String startDate, String endDate) {
		try {
			SimpleDateFormat format = new SimpleDateFormat();
			Date start = format.parse(startDate);
			Date end = format.parse(endDate);
			if (start.getTime() >= end.getTime()) {
				return null;
			}
			long date = random(start.getTime(), end.getTime());
			return new Date(date);
		} catch (Exception e) {
			e.printStackTrace();
		}
		return null;
	}

	public static long random(long begin, long end) {
		long rtn = begin + (long) (Math.random() * (end - begin));
		if (rtn == begin || rtn == end) {
			return random(begin, end);
		}
		return rtn;
	}

	/**
	 * 找出一个字符串中的中文部分
	 */
	public static String getChineseStr(String str) {
		String chineseStr = "";
		char[] ch = str.toCharArray();
		for (int i = 0; i < ch.length; i++) {
			try {
				if (isChineseChar(ch[i])) {
					chineseStr += ch[i];
				} else {
					chineseStr += " ";
				}
			} catch (UnsupportedEncodingException e) {
				e.printStackTrace();
			}
		}
		System.out.println("输出中文部分:" + chineseStr);
		return chineseStr;
	}

	/* 下面是判断一个字符是否是中文的方法 */
	public static boolean isChineseChar(char c)
			throws UnsupportedEncodingException {
		return String.valueOf(c).getBytes("GBK").length > 1;
	}

	/**
	 * 获得菱形
	 * 
	 */
	public static void getLinxing() {
		// TODO Auto-generated method stub
		int i = 0;
		int j = 0;
		int k = 0;
		for (i = 0; i < 5; i++) {
			for (j = 0; j < 5 - i; j++) {
				System.out.print(" ");
			}
			for (k = 0; k < 2 * i + 1; k++) {
				System.out.print("*");
			}
			System.out.println("");
		}
		for (i = 1; i < 5; i++) {
			for (j = 0; j < i + 1; j++) {
				System.out.print(" ");
			}
			for (k = 0; k < 2 * (5 - i) - 1; k++) {
				System.out.print("*");
			}
			System.out.println("");
		}
	}

	/**
	 * 计算一篇文章中不同单词出现的次数
	 */
	public static void word_count() {
		String str = "Hello pan 1 hello ya 2 feng";
		Pattern pattern = Pattern.compile("[a-zA-Z]+");// 定义正则表达式匹配单词
		// Pattern pattern = Pattern.compile("[a-zA-Z]");
		str = str.toLowerCase();// 转化为小写
		Matcher matcher = pattern.matcher(str);// 定义str的匹配器
		Map myHashMap = new HashMap();
		// 使用map有这么一个问题:hello是第一个出现的,但在第二次出现的时候在map中的位置就不是第一个了
		int n = 0;// 文章中单词的总数
		Object word = null;// 文章中的单词
		Object num = null;// 出现的次数

		while (matcher.find()) {// 是否匹配单词
			word = matcher.group();// 得到一个单词-树映射的键
			n++;
			if (myHashMap.containsKey(word)) {// 如果包含该键,单词出现过
				num = myHashMap.get(word);// 得到单词出现的次数
				Integer count = (Integer) num;// 强制转化
				myHashMap.put(word, new Integer(count.intValue() + 1));
			} else {
				myHashMap.put(word, new Integer(1));// 否则单词第一次出现,添加到映射中
			}
		}

		@SuppressWarnings("rawtypes")
		Iterator iter = myHashMap.keySet().iterator();// 得到树映射键集合的迭代器
		Object key = null;
		System.out.println("单词总数:" + n + "个,其中不同的有 " + myHashMap.size() + "个:");
		while (iter.hasNext()) {// 使用迭代器遍历树映射的键
			key = iter.next();
			System.out.println(key + " 有" + myHashMap.get(key) + "个;");
		}
	}

	/**
	 * 50个人围成一个圈数数,数到3或3的倍数的人出局,最后剩几号
	 */
	public static void count() {
		int[] man = new int[50];
		for (int i = 0; i < 50; i++) {
			man[i] = 1;
		}
		int j = 0;
		int num = 0;
		int count = 0;// 出局的人数
		while (true) {
			if (man[j % 50] == 1) {
				num++;
				if (num == 3) {
					man[j % 50] = 0;
					num = 0;
					count++;
				}
			}

			if (count == man.length) {
				System.out.println("数到了 " + j);
				System.out.println("最后一个是:" + (j % 50 + 1) + "号");
				break;
			}
			j++;
		}
	}

	/**
	 * 随机生成a--z的20个字母,不能重复,然后排序输出
	 */
	public static void outCharactor() {
		int num = 0;
		Object ch;
		Set st = new HashSet();
		while (true) {
			num = 97 + (int) (Math.random() * 24);
			ch = (char) num;
			st.add(ch);
			if (st.size() == 20) {
				break;
			}
		}

		System.out.print("排序前:");
		Iterator it = st.iterator();
		while (it.hasNext()) {
			System.out.print(it.next() + " ");
		}

		System.out.print("排序后:");
		Object[] a = new Object[20];
		a = st.toArray();
		char t;
		int k = 0;
		for (int j = 0; j < 20; j++) {
			for (k = j; k < 20; k++) {
				if ((Character) a[j] > (Character) a[k]) {
					t = (Character) a[j];
					a[j] = (Character) a[k];
					a[k] = t;
				} else {
					continue;
				}
			}
		}
		for (int i = 0; i < 20; i++) {
			System.out.print(a[i] + " ");
		}
	}

	/**
	 * 题目:一球从100米高度自由落下,每次落地后反跳回原高度的一半; 再落下,求它在 第10次落地时,共经过多少米?第10次反弹多高?
	 */
	public static void niuTun() {
		double h = 100;
		double sum = 0;
		for (int i = 1; i <= 10; i++) {
			sum += h;
			h = h * 0.5;
			if (i != 10) {
				sum += h;
			}
		}
		System.out.println(sum + "," + h);
	}

	/**
	 * 数学法 count 1 2 3 4 5 公式 经过多少米? 100 200 250 275 287.5 100*(3-1/(2^(N-2)))
	 * 反弹多高? 50 25 12.5 6.25 3.125 100/(2^N)
	 * @param args
	 * 
	 */
	public static void niuTunMaths(String[] args) {
		float H = 100f;
		int count = 10;
		System.out.println(H * (3 - 1.0 / Math.pow(2, count - 2)));
		System.out.println(H / Math.pow(2, count));
	}

	/**
	 * 
	 * @author jiashaoshan
	 * @param args
	 */
	public static void main(String[] args) {

	}

}


分享到:
评论

相关推荐

    Java经典练习小程序代码

    "Java经典练习小程序代码"是一个集合,包含了多种针对初学者设计的编程练习,旨在帮助他们巩固基础知识,提高编程技能。 1. **Java基础**: 这些练习代码主要涵盖了Java的基础部分,包括变量、数据类型、运算符、...

    java经典练习题50道

    "java经典练习题50道"这个资源为初学者提供了一个良好的学习平台,帮助他们深入理解和掌握Java编程基础。 首先,这50道练习题涵盖了Java语法的基础部分,包括变量声明、数据类型、运算符、流程控制(如if语句、...

    JAVA经典练习题 JAVA经典练习题

    "JAVA经典练习题" 本资源摘要信息是基于JAVA经典练习题的知识点总结,涵盖了JAVA语言的基础知识和高级特性。 一、数据类型和运算符 * 比较3个数的大小,并将它们按照从小到大的顺序输出(题目1) * 编写一个Java...

    Java经典练习50例

    "Java经典练习50例"提供了这样的机会,通过解决一系列精心设计的问题,你可以提升你的编程技能,了解Java的核心概念和特性。 这50个练习涵盖了Java的基础语法、面向对象编程、异常处理、集合框架、多线程、I/O流、...

    JAVA经典练习题

    "JAVA经典练习题"这个标题所指的,很显然是一个集合了各种Java编程练习题目的资源,旨在帮助学习者巩固和提升Java编程技能。描述中的“我们学校总结的JAVA试题简单而且绝对经典”,暗示了这些题目可能来源于教育机构...

    Java经典练习.rar

    Java经典练习.rarJava经典练习.rarJava经典练习.rarJava经典练习.rarJava经典练习.rar

    java经典练习题全套

    Java经典练习题全套 Java是一种广泛应用于Android开发、Web开发、企业软件开发等领域的高级编程语言。Java语言具有平台独立性、对象oriented、分布式、健壮的安全性、多线程等特点。下面是Java经典练习题全套,旨在...

    Java基础练习代码

    本文将深入探讨Java基础练习代码中的关键概念,帮助初学者巩固基础,提高编程技能。 首先,Java是一种面向对象的编程语言,它的核心特性包括封装、继承和多态。在练习代码中,你会看到如何定义类(class)并创建...

    java 接口练习作业

    在这个"java接口练习作业"中,我们将会探讨接口的使用,以及如何将其应用于集合框架中。 首先,让我们深入了解Java接口的基本概念。接口是完全抽象的类,不能包含实例变量,但可以声明常量。它由一系列无实现的方法...

    经典java编程练习题

    经典Java编程练习题 Java编程练习题是一组经典的编程练习题,旨在考核Java编程能力。这30道练习题涵盖了Java基础知识、数据类型、运算符、控制结构、方法、数组、面向对象编程等方面的知识点。 知识点1: Java基础...

    java示例练习 java示例练习 java示例练习

    在Java编程语言的学习过程中,示例练习是提升技能的关键步骤。"Java示例练习"的标题和描述都强调了通过实践来巩固理论的重要性。这里,我们将会深入探讨几个关键的知识点,这些知识点涵盖在给定的压缩包文件的各个...

    java 集合练习题

    在这个“java集合练习题”中,我们主要关注如何使用Java集合框架来处理数据,特别是对于学生信息的存储、排序和输出。以下是对这个练习题的详细解析: 1. **集合框架简介**: Java集合框架是Java API的一部分,它...

    java经典习题练习

    在Java经典习题练习中,我们通常会遇到各种算法和逻辑问题的解决,这有助于提升编程技能和理解计算机科学的核心概念。以下是两个经典的Java编程练习题及其解析: 1. 兔子问题(斐波那契数列) 这个问题是基于...

    java基础练习源码

    "java基础练习源码"这个标题表明,这是一个包含了与Java基础知识相关的编程练习的集合,可能是为了配合毕向东老师的Java基础视频教程。毕向东老师是知名的Java教育专家,他的课程通常覆盖了Java语言的核心概念,包括...

    java方法练习.docx

    Java 方法练习 本文档提供了多个 Java 方法练习题,涵盖了基本数据类型、方法重载、计算器等多个方面。下面是对每个题目的知识点总结: 1. 将数字转换为星期字符串 * Java 中的 switch 语句:用于根据不同的输入...

    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练习50道

    java经典算法练习题

    本压缩包包含了三个文档,分别是“JAVA经典算法40题.doc”、“最新JAVA编程题全集_50题及答案.doc”和“50道JAVA基础编程练习题.doc”,这些资源为初学者提供了大量的实践机会,有助于深入理解和运用Java。...

    java基础练习题 (目前到集合内含三个小综合案例)

    这份"java基础练习题(目前到集合内含三个小综合案例)"涵盖了Java的基础知识,旨在帮助学习者巩固并提升Java编程技能。从JDK(Java Development Kit)入门到集合框架的学习,这是一个全面了解和实践Java编程的重要...

Global site tag (gtag.js) - Google Analytics