2021级-JAVA07 常用类(字符串)

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());
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值