码迷,mamicode.com
首页 > 编程语言 > 详细

JAVA基础编程50题(22-24题)详解

时间:2015-04-18 20:36:31      阅读:123      评论:0      收藏:0      [点我收藏+]

标签:java源代码   分类统计字符和数字   统计一个单词出现的次数   任意行数杨辉三角打印   java基础编程   

一、描述

题目1:统计输入的一段字符串,分别统计这个字符串中大小写字母的个数,以及数字出现的次数。 

第一种方法使用Character封装类的方法:isLowerCase(),isUpperCase(),isDigit()判断是否是该类字符, 第二种方法是直接使用char字符范围比较来统计。

题目2:用户输入一串待统计的字符串,然后输入用户想要统计的某个单词或者字符的次数。

 比如我输入如下字符串:fdhiaojavajidaoijdjava
我要统计其中的java字符串的个数。
  解题思路:传入待统计字符串str,以及需要统计的单词key,然后利用java自带的indexOf()找到首次出现该单词的位置,
                统计次数加1,并把前面统计过的字符串截去,在剩下的字段中匹配。

题目3:打印任意行数的杨辉三角,如下所示为8行的杨辉三角。

解题思路:杨辉三角主对角线和第一列数字全为1,除此之外当前数字是上方数字+上方前一个数字的和,表示为二维数组即:a[i][j]=a[i][j-1]+a[i-1][j-1]


二、源代码

源代码1:

package com.yue.day11;


import java.util.Scanner;


public class StaticsStr {


	/**
	 * 统计输入的一段字符串,分别统计这个字符串中大小写字母的个数,以及数字的个数
	 * 第一种方法:使用Character封装类的方法:isLowerCase(),isUpperCase(),isDigit()判断是否是该类字符.
	 * 第二种方法:直接使用char字符范围比较来统计
	 * @param args
	 */
	public static void main(String[] args) {		
		System.out.println("Please input a String to count the times of number,char:");
		Scanner sc = new Scanner(System.in);
		String input = sc.next();
		commonStaticStr(input);
		CharStaticStr(input);
	}


	private static void CharStaticStr(String input) {
		//使用Character封装类的:isLowerCase(),isUpperCase(),isDigit()方法.
		int digitCount = 0;
		int bigCount = 0;
		int smallCount = 0;
		char[] chArr = input.toCharArray();
		
		for (int i = 0; i < chArr.length; i++) {
			char ch = chArr[i];
			if (Character.isDigit(ch)) {
				digitCount++;
			} else if (Character.isLowerCase(ch)) {
				smallCount++;
			} else if (Character.isUpperCase(ch)) {
				bigCount++;
			} else {
				continue;
			}
		}
		System.out.println("方法一统计结果:number:" + digitCount + " ,bigChar:" + bigCount
				+ " ,smallChar:" + smallCount);


	}


	private static void commonStaticStr(String input) {
		//使用char字符的比较来统计
		int digitCount = 0;
		int bigCount = 0;
		int smallCount = 0;
		for (int i = 0; i < input.length(); i++) {
			char ch = input.charAt(i);
			if (ch >= '0' && ch <= '9') {
				digitCount++;
			} else if (ch >= 'a' && ch <= 'z') {
				smallCount++;
			} else if (ch >= 'A' && ch <= 'Z') {
				bigCount++;
			} else {
				continue;
			}
		}
		System.out.println("方法二统计结果:number:" + digitCount + " ,bigChar:" + bigCount
				+ " ,smallChar:" + smallCount);


	}


}

运行结果:

技术分享


源代码2:

package com.yue.day11;


import java.util.Scanner;


public class StatisticStr {


	/**
	 * 用户输入一串待统计的字符串,然后输入用户想要统计的某个单词或者字符的次数
	 * 比如我输入如下字符串:fdhiaojavajidaoijdjava
	 * 我要统计其中的java字符串的个数。
	 * 解题思路:传入待统计字符串str,以及需要统计的单词key,然后利用java自带的indexOf()找到首次出现该单词的位置,
		                 统计次数加1,并把前面统计过的字符串截去,在剩下的字段中匹配。
	 * @param args
	 */
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		System.out.println("Please input a String:");		
		String str = sc.nextLine();
		System.out.println("Please input the string you want to count:");
		String key = sc.nextLine();
		int times = statisticString(str,key);
		System.out.println(times);
		sc.close();
	}


	private static int statisticString(String str,String key) {
		// 传入待统计字符串str,以及需要统计的单词key,然后利用java自带的indexOf()找到首次出现该单词的位置,
		//统计次数加1,并把前面统计过的字符串截去,在剩下的字段中匹配。
		int times = 0;
		while (true) {
			int index = str.indexOf(key);
			if (index != -1) {
				times++;
				str = str.substring(index + key.length());
			}else{
				return times;
			}
		}
		
	}


}

运行结果:

技术分享


源代码3:

package com.yue.day11;

import java.util.Scanner;

public class YangHuiTri {

	/**
	 * 打印任意行数的杨辉三角,如下所示为8行的杨辉三角
1	
1	1	
1	2	1	
1	3	3	1	
1	4	6	4	1	
1	5	10	10	5	1	
1	6	15	20	15	6	1	
1	7	21	35	35	21	7	1	
		解题思路:杨辉三角主对角线和第一列数字全为1,除此之外当前数字是上方数字+上方前一个数字的和
		表示为二维数组即:a[i][j]=a[i][j-1]+a[i-1][j-1]
	 * @param args
	 */
	public static void main(String[] args) {
		System.out.println("请输入要打印的杨辉三角的行数(1-50):");
		Scanner scanner = new Scanner(System.in);		
		int line = scanner.nextInt();
		while(line<=0||line>50){
			System.out.println("您输入的数字有误,请重新输入要打印的杨辉三角的行数(1-50):");
			line = scanner.nextInt();
		}
		printYangHuiTri(line);

	}
	
	private static void printYangHuiTri(int line) {
		// 打印杨辉三角:杨辉三角主对角线和第一列数字全为1,除此之外当前数字是上方数字+上方前一个数字的和.
		//表示为二维数组即:a[i][j]=a[i][j-1]+a[i-1][j-1]
		
		int[][] arr = new int[line][];

		for (int i = 0; i < arr.length; i++) {
			arr[i] = new int[i + 1];
			for (int j = 0; j <= i; j++) {
				if (j == 0) {
					arr[i][j] = 1;
				} else if (i == j) {
					arr[i][j] = 1;
				} else {
					arr[i][j] = arr[i - 1][j - 1] + arr[i - 1][j];
				}

			}
		}
		//调用循环遍历数组的方法
		printArrayLine(arr);

	}
	
	private static void printArrayLine(int[][] arr) {
		// 循环遍历数组

		for (int i = 0; i < arr.length; i++) {
			for (int j = 0; j < arr[i].length; j++) {
				System.out.print(arr[i][j] + "\t");

			}
			System.out.println();
		}

	}
}

运行结果:

技术分享

JAVA基础编程50题(22-24题)详解

标签:java源代码   分类统计字符和数字   统计一个单词出现的次数   任意行数杨辉三角打印   java基础编程   

原文地址:http://blog.csdn.net/tongyuehong137/article/details/45116067

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!