PTA 实验四:JAVA语言基础刷题(四)--字符串

 目录

7-1 群发邮件

输入格式:

输出格式:

输入样例:

输出样例:

7-2 学号识别

输入格式:

输出格式:

输入样例:

输出样例:

输入样例1:

输出样例1:

7-3 jmu-Java-02基本语法-03-身份证排序

输入样例:

输出样例:

7-4 单词替换

输入格式:

输出格式:

输入样例:

输出样例:

7-5 jmu-Java-02基本语法-02-StringBuilder

输入样例:

输出样例:

7-6 图书价格汇总

输出格式:

输入样例:

输出样例:

 7-7 编写程序,实现字符串大小写的转换并倒序输出。

输入格式:

输出格式:

输入样例:

输出样例:

7-8 字符串加密

输入格式:

输出格式:

输入样例1:

输出样例1:

输入样例2:

输出样例2:


7-1 群发邮件

作为一个职业HR,要给某个项目组的所有职员群发邮件,已经知道HR有所有人的姓名、电话以及邮箱,请编写程序,取出所有人的邮箱,合并为一个邮箱列表,邮箱之间以“;”隔开,使其可以群发邮件。

输入格式:

在一行中给出所有人的姓名、电话以及邮箱,例如:丽丽/13539870198/lili@qq.com,天梯/13408791122/tiant@qq.com

输出格式:

一行中邮箱列表,以分号隔开。

输入样例:

在这里给出一组输入。例如:

丽丽/13539870198/lili@qq.com,天梯/13408791122/tiant@qq.com,楠楠/13112034567/nn@qq.com

输出样例:

在这里给出相应的输出。例如:

lili@qq.com;tiant@qq.com;nn@qq.com;
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;
        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;
            }
        }

        scan.close();
    }
}

7-2 学号识别

学校的学号由8位数字组成,前两位是入学年份(省略了20);第3、4位是学院编号,01代表材料学院,02代表机械学院,03代表外语学院,20代表软件学院;第5、6位是学院内部班级编号,最后两位是班级内部学号。如:18011103,入学年份是2018年,材料学院,11班,03号

输入格式:

8位数字组成的学号。例如:18011103
注意:输入学号不是8位或者学院编号不是01、02、03、20其中之一,属于非法输入

输出格式:

学号每一项的完整说明。例如:
入学年份:2018年
学院:材料学院
班级:11
学号:03

注意:如非法输入,输出“Wrong Format"

输入样例:

在这里给出一组输入。例如:

18011103

输出样例:

在这里给出相应的输出。例如:

入学年份:2018年
学院:材料学院
班级:11
学号:03

输入样例1:

在这里给出一组输入。例如:

18013

输出样例1:

在这里给出相应的输出。例如:

Wrong Format
import java.util.Scanner;
 
public class Main {
 
	public static void main(String[] args) {
		String a;
		String year,college,clas,num;
		Scanner in = new Scanner(System.in);
		a = in.next();
		if(8!=a.length()) {
			System.out.print("Wrong Format");
			return;
		}
		year = a.substring(0,2);
		college = a.substring(2,4);
		clas = a.substring(4,6);
		num = a.substring(6,8);
		if(college.equalsIgnoreCase("01")) {
			college = "材料学院";
		}else if(college.equalsIgnoreCase("02")) {
			college = "机械学院";
		}else if(college.equalsIgnoreCase("03")) {
			college = "外语学院";
		}else if(college.equalsIgnoreCase("20")) {
			college = "软件学院";
		}else {
			System.out.print("Wrong Format");
			return;
		}
		
		System.out.print("入学年份:20"+year+"年\n"
				+ "学院:"+college+"\n"
				+ "班级:"+clas+"\n"
				+ "学号:"+num);
	}
 
}

7-3 jmu-Java-02基本语法-03-身份证排序

  1. 输入n,然后连续输入n个身份证号。
  2. 然后根据输入的是sort1还是sort2,执行不同的功能。输入的不是sort1或sort2,则输出exit并退出。
    输入sort1,将每个身份证的年月日抽取出来,按年-月-日格式组装,然后对组装后的年-月-日升序输出。
    输入sort2,将所有身份证按照里面的年月日升序输出。

注意:处理输入的时候,全部使用ScannernextLine()方法,以免出错。

输入样例:

6
410425198309308225
320203197206115011
431227196108033146
330226196605054190
34080019810819327X
320111197112301539
sort1
sort2
e

输出样例:

1961-08-03
1966-05-05
1971-12-30
1972-06-11
1981-08-19
1983-09-30
431227196108033146
330226196605054190
320111197112301539
320203197206115011
34080019810819327X
410425198309308225
exit
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;
 
public class Main {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        int count=Integer.valueOf(sc.nextLine());
        String s[]=new String[count];
        for (int i=0;i<count;i++){
            s[i]=sc.nextLine();
        }
        String temp;
        SimpleDateFormat df=new SimpleDateFormat("yyyyMMdd");
        while (true){
            String tem=sc.nextLine();
            if (tem.equals("sort1")){
                Date date[]=new Date[count];
                for (int j=0;j<count;j++){
                    for (int i=0;i<count-j-1;i++){
                        String bir1=s[i].substring(6,14);
                        String bir2=s[i+1].substring(6,14);
                        Date d1;
                        Date d2;
                        try {
                            d1 = df.parse(bir1);
                            d2 =df.parse(bir2);
                            if (d1.getTime()>d2.getTime()){
                                temp=s[i];
                                s[i]=s[i+1];
                                s[i+1]=temp;
                            }
                        } catch (ParseException e) {
                            e.printStackTrace();
                        }
                    }
                }
                for (int i=0;i<count;i++){
                    String bir=s[i];
                    System.out.println(bir.substring(6,10)+"-"+bir.substring(10,12)+"-"+bir.substring(12,14));
                }
            }else if (tem.equals("sort2")){
                Date date[]=new Date[count];
                for (int j=0;j<count;j++){
                    for (int i=0;i<count-j-1;i++){
                        String bir1=s[i].substring(6,14);
                        String bir2=s[i+1].substring(6,14);
                        Date d1;
                        Date d2;
                        try {
                            d1 = df.parse(bir1);
                            d2 =df.parse(bir2);
                            if (d1.getTime()>d2.getTime()){
                                temp=s[i];
                                s[i]=s[i+1];
                                s[i+1]=temp;
                            }
                        } catch (ParseException e) {
                            e.printStackTrace();
                        }
                    }
                }
                for (int i=0;i<count;i++){
                    System.out.println(s[i]);
                }
 
            }else {
                System.out.println("exit");
            }
        }
    }
}

7-4 单词替换

设计一个对字符串中的单词查找替换方法,实现对英文字符串中所有待替换单词的查找与替换。

输入格式:

首行输入母字符串,第二行输入查询的单词,第三行输入替换后的单词。

输出格式:

完成查找替换后的完整字符串

输入样例:

在这里给出一组输入。例如:

Although I am without you, I will always be ou you
ou
with

输出样例:

在这里给出相应的输出。例如:

Although I am without you, I will always be with you
import java.util.Scanner;
class ReplaceString {
    public static String replaceStr(String str,String minstr,String replaceStr){
        String s[] =str.split(" ");
        StringBuffer stringBuffer=new StringBuffer();
        for(int i=0;i<s.length;i++){
            if (minstr.equals(s[i])){
                s[i]=replaceStr;
                stringBuffer.append(s[i]);
                if(i+1<s.length)
                    stringBuffer.append(" ");
                //对修改后的单词进行拼接

            }
            else if(!minstr.equals(s[i])){
                stringBuffer.append(s[i]);
                if(i+1<s.length)
                stringBuffer.append(" ");
            }
        }

        return stringBuffer.toString();
    }
}
class Main{
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        System.out.println(ReplaceString.replaceStr(scanner.nextLine(), scanner.nextLine(), scanner.nextLine()));
    }
}

7-5 jmu-Java-02基本语法-02-StringBuilder

输入3个整数n、begin、end

首先,使用如下代码:

for(int i=0;i<n;i++)

将从0到n-1的数字拼接为字符串str。如,n=12,则拼接出来的字符串为01234567891011

最后截取字符串str从beginend(包括begin,但不包括end)之间的字符串,并输出。

输入样例:

10
5
8
1000
800
900

输出样例:

567
0330430530630730830931031131231331431531631731831932032132232332432532632732832933
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-6 图书价格汇总

输入格式:

假设某图书馆中图书记录的格式为“Java程序设计: 34;Web程序设计: 56;JSP程序设计:20”(每本书的价格是整数,每本书的价格与下一本书的名字之间有一个中文;)。

输出格式:

编写一个类的方法,能够接受键盘录入的符合上述格式的图书内容字符串,输出图书记录中所有书目的总价格。

输入样例:

Java程序设计:34 ;Web程序设计: 56;JSP程序设计:20

输出样例:

Java程序设计:34 
Web程序设计: 56
JSP程序设计:20
总价格为110
import java.util.Comparator;
import java.util.Arrays;
import java.util.Scanner;
import java.util.Objects;

class Book {
    public String name;
    public int value;

}

public class Main {
    public static void main(String[] args) {

        Scanner scan = new Scanner(System.in);
        int sumvalue = 0;
        String str;
        str = scan.nextLine();

        int value = 0;

        for (int i = 0; i < str.length(); i++) {
            if (str.charAt(i) == ';') {
                System.out.println();
            } else {
                System.out.print(str.charAt(i));
            }

            if (str.charAt(i) >= '0' && str.charAt(i) <= '9') {
                value = value * 10 + str.charAt(i) - '0';
            } else if (i + 1 < str.length()) {
                sumvalue += value;
                value = 0;
            }
        }
        sumvalue += value;
        System.out.println();
        System.out.println("总价格为" + sumvalue);

        scan.close();
    }
}

 7-7 编写程序,实现字符串大小写的转换并倒序输出。

编写程序,实现字符串大小写的转换并倒序输出。

输入格式:

输入一行字符串

输出格式:

字符串大小写的转换,并倒序输出

输入样例:

Hello World!

输出样例:

!DLROw OLLEh
import java.util.Scanner;
public class Main
{
	 public static void main(String args[]) {
		Scanner sc=new Scanner(System.in);
		String s=sc.nextLine();
		StringBuffer sb=new StringBuffer();
		for(int i=0;i<s.length();i++) {
			char ch=s.charAt(i);
			if(Character.isUpperCase(ch)) {
				sb.append(Character.toLowerCase(ch));
			}
			else if(Character.isLowerCase(ch)) {
				sb.append(Character.toUpperCase(ch)); 
			}
			else
				sb.append(ch);
		}
		System.out.println(sb.reverse());
    }

	
}

7-8 字符串加密

输入一个原始字符串(长度小于80),然后输入一个5位的数字字符串作为加密密钥,对原始字符串中的每个字符根据其位置(对5取模)变换为加上数字字符串中的数字的字符。如输入原始字符串student,然后输入5位的加密数字12345,因此:

原始字符   加密数字  变换后的字符
   s          1         t
   t          2         v
   u          3         x
   d          4         h
   e          5         j
   n          1         o
   t          2         v
        

加密后的字符串位:tvxhjov

输入格式:

第一个输入一个原始字符串
第二行输入一个5位用来加密的数字字符串

输出格式:

加密后的字符串

输入样例1:

在这里给出一组输入。例如:

student
12345

输出样例1:

在这里给出相应的输出。例如:

tvxhjov

输入样例2:

在这里给出一组输入。例如:

Welcome to Java!
10932

输出样例2:

在这里给出相应的输出。例如:

Xeufqne)wq!Jjyc"
import java.util.Arrays;
import java.util.Scanner;

public class Main{
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        String s=sc.nextLine();
        int k=sc.nextInt();
//        for(int i=0;i<s.length();i++) {
//            System.out.print(s.charAt(i));
//        }
//        System.out.println();
        int a[]=new int[5];
        for(int i=a.length-1;i>=0;i--) {
            a[i]=k%10;
            k=k/10;
        }
//        System.out.println(Arrays.toString(a));
        for(int i=0;i<s.length();i++) {
            System.out.print((char)(s.charAt(i)+a[i%5]));
        }
    }
}

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值