6-1 人口统计
本题运行时要求键盘输入10个人员的信息(每一个人信息包括:姓名,性别,年龄,民族),要求同学实现一个函数,统计民族是“汉族”的人数。
函数接口定义:
public static int numofHan(String data[])
其中 data[]
是传入的参数。 data[]
中的每一个元素都是一个完整的人员信息字符串,该字符串由“姓名,性别,年龄,民族”,各项之间用英文半角的逗号分隔。函数须返回 值是汉族的人数。
裁判测试程序样例:
import java.util.Scanner; public class Main { public static void main(String[] args) { final int HUMANNUM=10; String persons[]=new String[HUMANNUM]; Scanner in=new Scanner(System.in); for(int i=0;i<persons.length;i++) persons[i]=in.nextLine(); int result=numofHan(persons); System.out.println(result); } /*在此处给出函数numofHan()*/ }
输入样例:
Tom_1,男,19,汉族
Tom_2,女,18,汉族
Tom_3,男,20,满族
Tom_4,男,18,汉族
Tom_5,男,19,汉族人
Tom_6,女,17,汉族
Tom_7,男,19,蒙古族
汉族朋友_1,男,18,汉族
Tom_8,male,19,老外
Tom_9,female,20,汉族
输出样例:
7
public static int numofHan(String data[])//转入了字符串数组
{
int count=0;//定义整形变量
for(int i=0;i<data.length;i++)//遍历整个字符串数组
{
if(data[i].indexOf("汉",1)>0)//indexOf方法可以获取到一个字符串中指定字符的位置,例如从字符串第
{
count++;
}
}
return count;
}
//关于indexOf方法的详细解释,indeOf(查找字符,开始查找位置),如果不添加查找位置,会默认从头开始查找,因为
7-1 sdut-String-3 字符串字母大小写转换逆序输出
import java.util.Calendar;
import java.util.Random;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner cin = new Scanner(System.in);
String s = cin.nextLine();
int n = s.length();
for(int i = n - 1; i >= 0; i --)
{
char c = s.charAt(i);
if(c >= 'A' && c <= 'Z')
c += 32;
else if(c >= 'a' && c <= 'z')
c -= 32;
System.out.print(c);
}
}
}
7-2 sdut-String-4 去除字符串中数字字符逆序输出
import java.util.Calendar;
import java.util.Random;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner cin = new Scanner(System.in);
String s = cin.nextLine();
int n = s.length();
for(int i = n - 1; i >= 0; i --)
{
char c = s.charAt(i);
if(c >= '0' && c <= '9')
continue;
System.out.print(c);
}
}
}
7-3 sdut-String-1 识蛟龙号载人深潜,立科技报国志(I)
import java.lang.reflect.Method;
import java.util.Calendar;
import java.util.Random;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner cin = new Scanner(System.in);
while(true)
{
String line = cin.nextLine();
if(line.equals("end")) break;
int len = line.length();
long sum = 0;
for(int i = 0; i < len; i ++)
{
char c = line.charAt(i);
if(c >= '0' && c <= '9')
sum += (c - '0');
}
System.out.println(sum);
}
}
}
7-4 sdut-String-5 图书价格汇总(II)
import java.lang.reflect.Method;
import java.util.Calendar;
import java.util.Random;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner cin = new Scanner(System.in);
String s = cin.nextLine();
String[] t = s.split(";");
int sum = 0;
for(int i = 0; i < t.length; i ++)
{
String now = t[i];
int index = now.indexOf(":");
String name = now.substring(0,index).trim();
String data = now.substring(index + 1).trim();
int price = Integer.parseInt(data);
sum += price;
System.out.println(name + "--" + data);
}
System.out.println("总价格--"+sum);
}
}
7-5 sdut-String-2 识蛟龙号载人深潜,立科技报国志(II)(正则表达式)
import java.lang.reflect.Method;
import java.util.Calendar;
import java.util.Random;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner cin = new Scanner(System.in);
while(true)
{
String line = cin.nextLine();
if(line.equals("end")) break;
String[] s = line.split("\\D+");
long sum = 0;
for(int i = 0; i < s.length; i ++)
{
if(!s[i].equals(""))
{
int data = Integer.parseInt(s[i]);
sum += data;
}
}
System.out.println(sum);
}
}
}
7-6 sdut-String+array1(Collection-Map)-1 读中国载人航天史,汇航天员数量,向航天员致敬(字符串+数组、LinkedMap )
import java.lang.reflect.Method;
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner cin = new Scanner(System.in);
String name = null;
Map<String, Integer> map = new LinkedHashMap<String, Integer>();
while(true)
{
name = cin.next();
if(name.equals("end")) break;
map.put(name, map.getOrDefault(name, 0) + 1);
}
for(String it : map.keySet())
{
System.out.println(it + " " + map.get(it));
}
}
}
7-7 sdut-String-6 Java判断合法标识符
import java.util.Scanner;
import java.io.*;
public class Main {
public static void main(String[] args) {
//准备键盘输入
Scanner sc = new Scanner(System.in);
//如果字符串不是结束标志,则进行判断
while (sc.hasNext()) {
//得到输字符串并输出
String str = sc.nextLine();
char part;
boolean flag = true; //设立标志位
char first = str.charAt(0);//得到字符串首字符
//若首字符合法,继续判断后续字符
if (Character.isJavaIdentifierStart(first)) {
int len = str.length();//得到字符串长度
int i;
for (i = 1; i < len; i++) {
part = str.charAt(i);
if (!Character.isJavaIdentifierPart(part)) {
flag = false;
break;
}
}
} else {
//首字符不合法,判断结果确定非法
flag = false;
}
if (flag) {
System.out.println("true");
} else {
System.out.println("false");
}
}
}
}
7-8 sdut-String--判定Java源文件名称
import java.util.Scanner;
import java.io.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (sc.hasNext()) {
String str = sc.nextLine();
if(str.endsWith(".java") && judge(str))
{
System.out.println("true");
}
else System.out.println("false");
}
}
public static boolean judge(String str)
{
char part;
boolean flag = true; //设立标志位
char first = str.charAt(0);//得到字符串首字符
if (Character.isJavaIdentifierStart(first)) {
int len = str.length();//得到字符串长度
int i;
for (i = 1; i < len - 5; i++) {
part = str.charAt(i);
if (!Character.isJavaIdentifierPart(part)) {
flag = false;
break;
}
}
} else {
flag = false;
}
return flag;
}
}
7-9 群发邮件
import java.util.Comparator;
import java.util.Arrays;
import java.util.Scanner;
import java.util.Objects;
public class Main
{
public static void main(String[] args)
{
Scanner scan = new Scanner(System.in);
String str = scan.nextLine();
int fg = 0;
for (int i = 0; i < str.length(); i++)
{
if (str.charAt(i) == '/' && fg == 0)
{
fg = 1;
i += 11;
}
if (str.charAt(i) == '/' && fg == 1)
{
for (i = i + 1; i < str.length() && str.charAt(i) != ','; i++)
{
System.out.print(str.charAt(i));
}
System.out.print(';');
fg = 0;
}
}
}
}
7-10 编程题:选修课成绩统计问题
import java.util.Arrays;
import java.util.Scanner;
public class Main{
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
String str[]=sc.nextLine().split(",");
String str1[][]=new String [str.length][3];
for(int i=0;i<str.length;i++){
str1[i]=str[i].split(" ");
}
for (int i = 0; i < str.length; i++) {
int grade=0;
for(int j=0;j<3;j++){
if(str1[i][j].equals("A")) {grade+=5;}
else if(str1[i][j].equals("B")) {grade+=4;}
else if(str1[i][j].equals("C")) {grade+=3;}
else if(str1[i][j].equals("D")) {grade+=2;}
else if(str1[i][j].equals("E")) {grade+=1;}
else {grade=grade+0;}
}
if(i==str.length-1)
System.out.println(str1[i][0]+" "+grade);
else
System.out.print(str1[i][0]+" "+grade+",");
}
}
}
7-11 数组元素交换
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
int[] a = new int[20];
Scanner sc = new Scanner(System.in);
String str = sc.nextLine();
String[] split = str.split(" ");//利用空格" "
for (int i=0;i<split.length;i++){
a[i] = Integer.parseInt(split[i]);//将字符转化为整形
}
for (int i=0;i<split.length;i++){
System.out.println(a[i]);
}
exchange(a, split.length);//交换
for (int i=0;i<split.length;i++){
System.out.println(a[i]);
}
}
public static void exchange(int[] a,int index){
int max,min;
int maxIndex,minIndex;
max = a[0];
min = a[0];
maxIndex = 0;
minIndex = 0;
for (int j=1; j<index; j++){
if (a[j]>max){
max=a[j];
maxIndex = j;
}
if (a[j]<min){
min = a[j];
minIndex = j;
}
}
int temp;
temp = a[0];
a[0] = max;
a[maxIndex] = temp;
int rs;
rs = a[index-1];
a[index-1] = min;
a[minIndex] = rs;
}
}
7-12 单词替换
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String ss = sc.nextLine();//先输入一整行,取名ss
String s1= sc.next();//然后输入要查找的
String s2 = sc.next();//最后输入要替换的
String[] s = ss.split(" ");//将ss以空格分隔成字符串数组s[],取名s
StringBuilder sb = new StringBuilder();//开辟一个可变字符串sb
for (int i = 0; i < s.length; i++)
{//length是数组有多少元素,length()是字符串中有多少个字符,差点搞错(汗
if (s[i].equals(s1))//要是字符串数组s[]的哪个字符串s[i]跟s1相等
{
s[i] =s[i].replaceAll(s[i], s2);
}//那就让它等于s2
sb.append(s[i]);//将s[]以空格拼接起来
if(i<s.length-1)//注意结尾不能有空格
sb.append(" ");
}
System.out.println(sb.toString());//芜湖~
sc.close();
}
}
7-13 jmu-Java-02基本语法-02-StringBuilder
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while (scanner.hasNextInt()) {
int n, begin, end;
n = scanner.nextInt();
begin = scanner.nextInt();
end = scanner.nextInt();
StringBuilder str = new StringBuilder("");
for (int i = 0; i < n; i++) {
str.append(i);
}
System.out.println(str.substring(begin,end));
}
}
}
7-14 命名规范
import java.util.*;
public class Main{
public static void main(String args[]){
Scanner sc = new Scanner(System.in);
String a = sc.nextLine();
String []d = a.split("_");
boolean f = false;
for(int i = 0; i < a.length(); i++)
{
if(a.charAt(i) == '_')
{
f = true;
continue;
}
if(f)
{
f = false;
System.out.printf("%c", a.charAt(i) - 32);
}
else
System.out.print(a.charAt(i));
}
}
}
7-15 判断登录信息是否正确--字符串比较
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String str1 = scanner.next();
String str2 = scanner.next();
if (str1.equals("SwpuIot")){
if (str2.equals("123456")){
System.out.println("Welcome");
return;
}
System.out.println("Mismatch");
return;
}
System.out.println("NotExist");
}
}
7-16 通过键盘输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String str = sc.nextLine();
sc.close();
char[] chars = str.toCharArray();
int letter=0,num=0,blank=0,other=0;
for(int i=0;i<chars.length;i++) {
if((chars[i]>='A' && chars[i]<='Z') || (chars[i]>='a' && chars[i]<='z'))
letter++;
else if(chars[i]>=47 && chars[i]<=57) {
num++;
}else if(chars[i]==32) {
blank++;
}else {
other++;
}
}
System.out.println("字母个数:"+letter);
System.out.println("数字个数:"+num);
System.out.println("空格个数:"+blank);
System.out.println("其他字符个数:"+other);
}
}
7-17 将一整个正整数的所有位重新排序,组成一个最大数
import java.util.Calendar;
import java.util.*;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner cin = new Scanner(System.in);
String a = cin.nextLine();
char b[] = new char[a.length()];
for(int i = 0; i < a.length(); i ++)
{
char c = a.charAt(i);
b[i] = c;
}
Arrays.sort(b);
for(int i = a.length() - 1; i >= 0; i --)
System.out.print(b[i]);
}
}
7-18 String的格式判断与内容提取
import java.util.*;
public class Main{
public static void main(String args[]){
Scanner sc = new Scanner(System.in);
String a = sc.nextLine();
int idx = a.indexOf(' ');
int l = a.length();
if(idx != -1)
System.out.print("Wrong Format");
else if(l % 8 != 0)
System.out.print("Wrong Format");
else
{
String []v = new String [10000];
int cnt = 0;
for(int i = 0; i < l; i += 8)
{
if(a.substring(i, i + 6).equals("202017") || a.substring(i, i + 6).equals("202061"))
v[cnt++] = a.substring(i + 4, i + 8);
}
for(int i = 0; i < cnt; i++)
System.out.print(v[i]+(i != cnt - 1 ? ' ' : '\n'));
}
}
}
7-19 jmu-Java-02基本语法-01-综合小测验
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Scanner;
public class Main {
public static void main (String [] args) {
Scanner scanner = new Scanner(System.in);
//创建自己的帮助类(帮助类在下面...)
Helper helper = new Helper();
while(scanner.hasNext()) {
String str = scanner.next();
if ("fib".equals(str)) {
helper.fib(scanner.nextInt());
} else if ("sort".equals(str)) {
//先将接下来的数字放在集合里面
List<Integer> sortList = new ArrayList<>();
while (scanner.hasNextInt()) {
sortList.add(scanner.nextInt());
}
//再将集合转换为数组传入函数
helper.sort(sortList.toArray(new Integer[0]));
} else if ("search".equals(str)) {
helper.search(scanner.nextInt());
} else if ("getBirthDate".equals(str)) {
int n = scanner.nextInt();
for (int i = 0; i < n; i++) {
String identityCardNum = scanner.next();
helper.getBirthDate(identityCardNum);
}
} else {
//字符串为其他时退出程序
System.out.println("exit");
System.exit(0);
}
}
}
}
class Helper {
/**
* 使用此数组存储下来sort后的数组,用于之后的search操作
* */
private Integer[] sortedArray;
/**
* 斐波拉契的处理方法
* 这里使用了正向递推的方法实现斐波拉契数列
* 实现斐波拉契数列的方法有好几种,网上资料很多,这里不再赘述
* */
void fib (int n) {
if (n == 1) {
System.out.println("1");
return;
} else if (n == 2) {
System.out.println("1 1");
return;
}
int[] num = new int[n];
num[0] = 1; num[1] = 1;
System.out.print("1 1");
for (int i = 2; i < n; i++) {
num[i] = num[i - 1] + num[i - 2];
System.out.print(" " + num[i]);
}
System.out.println();
}
/**
* 使用Java自带的排序算法进行排序
* */
void sort(Integer nums[]) {
Arrays.sort(nums);
sortedArray = nums;
System.out.println(Arrays.toString(nums));
}
/**
* 查询数组中是否含该元素
* 注意:当数组中不存在查找值时,
* Arrays.binarySearch(int[] a, int key)的返回值不一定为-1
* 所以需要判断一下:当返回值小于0时,则输出-1;当返回值大于0时,则输出返回值。
* */
void search(int searchNum) {
int ret = Arrays.binarySearch(sortedArray, searchNum);
if (ret < 0) {
System.out.println(-1);
} else {
System.out.println(ret);
}
}
/**
* 使用字符串分割的方法提取生日信息
* */
void getBirthDate(String identityCardNum) {
System.out.println(identityCardNum.substring(6, 10) + "-"
+ identityCardNum.substring(10, 12) + "-" + identityCardNum.substring(12, 14));
}
}
7-20 jmu-Java-01入门-格式化输入输出与字符串
import java.util.*;
public class Main{
public static void main(String args[]){
Scanner sc = new Scanner(System.in);
while(sc.hasNext())
{
String a = sc.nextLine();
if(a.equals("double"))
{
System.out.println("choice=double");
Double [] w = new Double [4];
for(int i = 0; i < 3; i++)
w[i] = sc.nextDouble();
System.out.printf("%-5.2f,%5.2f,%.2f\n", w[0], w[1], w[2]);
sc.nextLine();
}
else if(a.equals("line"))
{
System.out.println("choice=line");
String v = sc.nextLine();
System.out.println(v.toUpperCase());
}
else if(a.equals("int"))
{
System.out.println("choice=int");
String v = sc.nextLine();
String [] w= v.split("\\s+");
int cnt = 0;
for(int i = 0; i < w.length; i++)
cnt += Integer.parseInt(w[i]);
System.out.println(cnt);
}
else if(a.equals("str"))
{
System.out.println("choice=str");
String v = sc.nextLine();
String [] w= v.split("\\s+");
for(int i = w.length - 1; i >= 0; i--)
System.out.print(w[i]);
System.out.println();
}
else
{
System.out.println("choice="+a+"\nother");
break;
}
}
}
}
7-21 表达式计算
import java.util.*;
public class Main
{
public static boolean judge(char c1,char c2)
{
char ch[] = {'#','+','-','*','/','%','(',')'};
int num1 = 0,num2 = 0;
for(int i = 0;i <= 7;i ++)
{
if(ch[i] == c1)
num1 = i;
if(ch[i] == c2)
num2 = i;
}
if(num1 > num2)
return true;
return false;
}
public static int calculation(int t1,int t2,char c)
{
if(c == '+')
return t2 + t1;
else if(c == '-')
return t2 - t1;
else if(c == '*')
return t2 * t1;
else if(c == '%')
return t2 % t1;
else
return t2 / t1;
}
public static void main(String[] args)
{
Scanner sc = new Scanner(System.in);
String s = sc.nextLine();
Stack<Integer> stk_int = new Stack<>();
Stack<Character> stk_str = new Stack<>();
int index = 0;
stk_str.push('#');
for(int i = 0;i < s.length();i ++)
{
if(s.charAt(i) < '0' || s.charAt(i) > '9')
{
if(index != i)
stk_int.push(Integer.parseInt(s.substring(index,i)));
index = i+1;
boolean flag = false;
while(flag == false)
{
if (judge(s.charAt(i),stk_str.peek()))
{
stk_str.push(s.charAt(i));
if(stk_str.peek() == '(' )
stk_str.push('#');
if( stk_str.peek() == ')')
{
stk_str.pop();
while(stk_str.peek()!='#')
{
stk_int.push(calculation(stk_int.pop(),stk_int.pop(),stk_str.pop()));
}
stk_str.pop();
stk_str.pop();
}
flag = true;
}
else
{
stk_int.push(calculation(stk_int.pop(),stk_int.pop(),stk_str.pop()));
}
}
}
if(index != s.length() && i == s.length()-1)
stk_int.push(Integer.parseInt(s.substring(index,s.length())));
}
while(!stk_int.isEmpty() && stk_str.peek()!= '#')
{
stk_int.push(calculation(stk_int.pop(),stk_int.pop(),stk_str.pop()));
}
System.out.println(stk_int.pop());
}
}