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