一、描述
题目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();}}
}
运行结果: