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

28 篇文章 2 订阅
14 篇文章 24 订阅

7-1 sdut-String-3 字符串字母大小写转换逆序输出

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

输入格式:

输入一行字符串。

输出格式:

对字符串中的字母进行大小写转换,其余字符不变化,最后对字符串逆序输出。

输入样例1:

Hello World!

输出样例1:

!DLROw OLLEh

输入样例2:

12312kfakfaskakdsfjSDFDFFSFDSFSF123 afdkadsfk@

输出样例2:

@KFSDAKDFA 321fsfsdfsffdfdsJ
import java.util. *;
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String s = in.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 去除字符串中数字字符逆序输出

给定一行字符串,去除其中的数字字符,并逆序输出。

输入格式:

输入一行字符串。

输出格式:

去除字符串中的数字字符,并逆序输出。

输入样例1:

He11ll00d323o  w1232154304343or8ld!

输出样例1:

!dlrow  odlleH

输入样例2:

ABC12D2434EFG hi13jk3242lmn opqr13221st u123vw xy213z

输出样例2:

zyx wvu tsrqpo nmlkjih GFED
import java.util.*;
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String s = in.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)

背景简介:

“蛟龙号”载人深潜器是我国首台自主设计自主集成研制的作业型深海载人潜水器,设计最大下潜深度为7000米级,也是目前世界上下潜能力最强的作业型载人潜水器。“蛟龙号”可在占世界海洋面积99.8%的广阔海域中使用,对于我国开发利用深海的资源有着重要的意义。

中国是继美、法、俄、日之后世界上第五个掌握大深度载人深潜技术的国家。在全球载人潜水器中,“蛟龙号”属于第一梯队。目前全世界投入使用的各类载人潜水器约90艘,其中下潜深度超过1000米的仅有12艘,更深的潜水器数量更少,目前拥有6000米以上深度载人潜水器的国家包括中国、美国、日本、法国和俄罗斯。除中国外,其他4国的作业型载人潜水器最大工作深度为日本深潜器的6527米,因此“蛟龙号”载人潜水器在西太平洋的马里亚纳海沟海试成功到达7020米海底,创造了作业类载人潜水器新的世界纪录

从2009年至2012年,蛟龙号接连取得1000米级、3000米级、5000米级和7000米级海试成功。下潜至7000米说明蛟龙号载人潜水器集成技术的成熟标志着我国深海潜水器成为海洋科学考察的前沿与制高点之一

2012年6月27日11时47分,中国“蛟龙”再次刷新“中国深度”——下潜7062米。6月3日,“蛟龙”出征以来,已经连续书写了5个“中国深度”新纪录:6月15日,6671米;6月19日,6965米;6月22日,6963米;6月24日,7020米;6月27日,7062米。下潜至7000米,标志着我国具备了载人到达全球99%以上海洋深处进行作业的能力,标志着“蛟龙”载人潜水器集成技术的成熟,标志着我国深海潜水器成为海洋科学考察的前沿与制高点之一,标志着中国海底载人科学研究和资源勘探能力达到国际领先水平

‘蛟龙’号是我国载人深潜发展历程中的一个重要里程碑。它不只是一个深海装备,更代表了一种精神,一种不畏艰险、赶超世界的精神,它是中华民族进军深海的号角。

了解蛟龙号”载人深潜器“的骄人业绩,为我国海底载人科学研究和资源勘探能力达到国际领先水平而自豪,小伙伴们与祖国同呼吸、共命运,一定要学好科学文化知识、提高个人能力,增强创新意识,做事精益求精,立科技报国之志!

请编写程序,实现如下功能:读入关于蛟龙号载人潜水器探测数据的多行字符串,从给定的信息找出数字字符,输出每行的数字之和。

提示 若输入为“2012年2月”,则该行的输出为:7。每个数字字符单独相加。

输入格式:

读入关于蛟龙号载人潜水器探测数据的多行字符串,每行字符不超过100个字符。

以"end"结束。

输出格式:

与输入行相对应的各个数字之和。

输入样例1:

2012年6月27日11时47分,中国“蛟龙”再次刷新“中国深度”——下潜7062米
6月15日,6671米
6月19日,6965米
6月22日,6963米
6月24日,7020米
6月27日,7062米
下潜至7000米,标志着我国具备了载人到达全球99%以上海洋深处进行作业的能力
end

输出样例1:

48
32
42
34
21
30
25

输入样例2:

全世界投入使用的各类载人潜水器约90艘,下潜深度超过1000米的仅有12艘,更深的潜水器数量更少
6000米以上深度载人潜水器的国家包括中国、美国、日本、法国和俄罗斯
日本深潜器下潜6527米,蛟龙号在马里亚纳海沟海试成功到达7020米海底,创造了新的世界纪录
从2009年至2012年,蛟龙号接连取得1000米级、3000米级、5000米级和7000米级海试成功
下潜至7000米,说明蛟龙号载人潜水器集成技术的成熟
end

输出样例2:

13
6
29
32
7
import java.util.*;
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        while(in.hasNext())
        {
            String line = in.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)

假设图书馆中图书信息的格式为:

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

按要求输出每本图书的名称及价格,计算所有图书的总价格并输出。

输入格式:

读入一行图书信息。如:

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

提示:

(1)每本书的价格是整数,价格与下一本书的名字之间有一个中文;价格前可能有空格,可能没有。

(2)题目中的分号”“和冒号”“为全角字符。

输出格式:

分别输出每本图书的名称及价格,一本书占一行,形式为:书名--价格

最后,输出计算的所有图书的总价格,形式为:总价格--总价格

输入样例:

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

输出样例:

Java程序设计--34
Web程序设计--56
JSP程序设计--20
总价格--110

 

import java.util.*;
import java.lang.*;
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String s = in.nextLine();
        String[] t = s.split(";");
        int sum = 0;
        int i;
        for(i = 0; i < t.length; i ++)
        {
            String now = t[i];
            String[] q = now.split(":");
            int price=Integer.parseInt(q[1].trim());
            String name=q[0].trim();//.trim()用于去掉首尾的空白符
            sum=sum+price;
            System.out.println(name+"--"+price);
        }
        System.out.println("总价格--"+sum);
    }
}

7-5 sdut-String-2 识蛟龙号载人深潜,立科技报国志(II)(正则表达式)

背景简介:

“蛟龙号”载人深潜器是我国首台自主设计自主集成研制的作业型深海载人潜水器,设计最大下潜深度为7000米级,也是目前世界上下潜能力最强的作业型载人潜水器。“蛟龙号”可在占世界海洋面积99.8%的广阔海域中使用,对于我国开发利用深海的资源有着重要的意义。

中国是继美、法、俄、日之后世界上第五个掌握大深度载人深潜技术的国家。在全球载人潜水器中,“蛟龙号”属于第一梯队。目前全世界投入使用的各类载人潜水器约90艘,其中下潜深度超过1000米的仅有12艘,更深的潜水器数量更少,目前拥有6000米以上深度载人潜水器的国家包括中国、美国、日本、法国和俄罗斯。除中国外,其他4国的作业型载人潜水器最大工作深度为日本深潜器的6527米,因此“蛟龙号”载人潜水器在西太平洋的马里亚纳海沟海试成功到达7020米海底,创造了作业类载人潜水器新的世界纪录

从2009年至2012年,蛟龙号接连取得1000米级、3000米级、5000米级和7000米级海试成功。下潜至7000米说明蛟龙号载人潜水器集成技术的成熟标志着我国深海潜水器成为海洋科学考察的前沿与制高点之一

2012年6月27日11时47分,中国“蛟龙”再次刷新“中国深度”——下潜7062米。6月3日,“蛟龙”出征以来,已经连续书写了5个“中国深度”新纪录:6月15日,6671米;6月19日,6965米;6月22日,6963米;6月24日,7020米;6月27日,7062米。下潜至7000米,标志着我国具备了载人到达全球99%以上海洋深处进行作业的能力,标志着“蛟龙”载人潜水器集成技术的成熟,标志着我国深海潜水器成为海洋科学考察的前沿与制高点之一,标志着中国海底载人科学研究和资源勘探能力达到国际领先水平

‘蛟龙’号是我国载人深潜发展历程中的一个重要里程碑。它不只是一个深海装备,更代表了一种精神,一种不畏艰险、赶超世界的精神,它是中华民族进军深海的号角。

了解蛟龙号”载人深潜器“的骄人业绩,为我国海底载人科学研究和资源勘探能力达到国际领先水平而自豪,小伙伴们与祖国同呼吸、共命运,一定要学好科学文化知识、提高个人能力,增强创新意识,做事精益求精,立科技报国之志!

请编写程序,实现如下功能:读入关于蛟龙号载人潜水器探测数据的多行字符串,从给定的信息找出数字字符,输出每行的数字之和。

提示 若输入为“2012年2月”,则该行的输出为:2014。若干个连续的数字字符作为一个整体,以十进制形式相加。

输入格式:

读入关于蛟龙号载人潜水器探测数据的多行字符串,每行字符不超过80个字符。

以"end"结束。

输出格式:

与输入行相对应的各个整数之和。

输入样例1:

2012年6月27日11时47分,中国“蛟龙”再次刷新“中国深度”——下潜7062米
6月15日,6671米
6月19日,6965米
6月22日,6963米
6月24日,7020米
6月27日,7062米
下潜至7000米,标志着我国具备了载人到达全球99%以上海洋深处进行作业的能力
end

输出样例1:

9165
6692
6990
6991
7050
7095
7099

输入样例2:

全世界投入使用的各类载人潜水器约90艘,下潜深度超过1000米的仅有12艘,更深的潜水器数量更少
6000米以上深度载人潜水器的国家包括中国、美国、日本、法国和俄罗斯
日本深潜器下潜6527米,蛟龙号在马里亚纳海沟海试成功到达7020米海底,创造了新的世界纪录
从2009年至2012年,蛟龙号接连取得1000米级、3000米级、5000米级和7000米级海试成功
下潜至7000米,说明蛟龙号载人潜水器集成技术的成熟
end

输出样例2:

1102
6000
13547
20021
7000
import java.lang.*;
import java.util.*;
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        while(in.hasNext())
        {
            String line = in.nextLine();
            if(line.equals("end")) break;
            String[] s = line.split("\\D+");//“\\D+”表示所有非数字字符
            long sum = 0;
            for(int i = 0; i < s.length; i ++)
            {
                if(!s[i].equals(""))//避免出现空值,空值无法用parseInt转换
                {
                    int data = Integer.parseInt(s[i]);
                    sum += data;
                }
            }
            System.out.println(sum);
        }
    }
}

7-6 sdut-String+array1(Collection-Map)-1 读中国载人航天史,汇航天员数量,向航天员致敬(字符串+数组、LinkedMap )

1986年,中国实施“863”计划,航天技术列入其中。以载人飞船开始起步,最终建成我国的空间站。
1992年9月21日,中国实施载人航天工程,并确定了三步走的发展战略:第一步,发射载人飞船,建成初步配套的试验性载人飞船工程。第二步,突破载人飞船和空间飞行器的交会对接技术,利用载人飞船技术改装、发射一个空间实验室。第三步,建造载人空间站。

在长期的奋斗中,我国航天工作者不仅创造了非凡的业绩,而且铸就了特别能吃苦、特别能战斗、特别能攻关、特别能奉献的载人航天精神。载人航天精神,是“两弹一星”精神在新时期的发扬光大,是我们伟大民族精神的生动体现,永远值得全党、全军和全国人民学习。


截至2021年4月,历任航天英雄名字如下:
杨利伟(神舟五号)
费俊龙、聂海胜(神舟六号)
翟志刚、景海鹏、刘伯明(神舟七号)
景海鹏、刘旺、刘洋(神舟九号)
聂海胜、张晓光、王亚平(神舟十号)
景海鹏、陈东(神舟十一号)

会编程的小伙伴们,请以他们出征太空的先后顺序,统计一下航天英雄们出征太空的次数,以实际行动向航天员们致敬!

输入格式:

每次航天飞船的编号为一行读入数据,分别读入每次飞上太空的航天英雄的姓名,名字中间有一个空格分隔。
最后一行为“end“,表示输入结束。

提示:目前,中国航天员的数量小于20。

输出格式:

以出征太空的先后顺序,统计航天英雄们出征太空的次数。
每位航天员占一行,航天员姓名与出征次数中间有一个空格。

输入样例:

杨利伟
费俊龙 聂海胜
翟志刚 景海鹏 刘伯明
景海鹏 刘旺 刘洋
聂海胜 张晓光 王亚平
景海鹏 陈东
end

输出样例:

杨利伟 1
费俊龙 1
聂海胜 2
翟志刚 1
景海鹏 3
刘伯明 1
刘旺 1
刘洋 1
张晓光 1
王亚平 1
陈东 1

提示:

  • 对于Java语言,此题有两种解决方案:
    • (1)使用数组来解决;
    • (2)使用java.util.Map接口的实现类LinkedMap来解决。
      • LinkedHashMap是HashMap的子类,保证在遍历map元素时,可以按照添加的顺序实现遍历,对于频繁的遍历操作,它的执 行效率高于HashMap.
  • 对于Python语言,。。。。
  • 对于C语言,。。。。。。。
import java.lang.*;
import java.util.*;
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String name = null;
        Map<String, Integer> map = new LinkedHashMap<String, Integer>();//LinkedHashMap:对于元素的插入顺序 or 访问顺序进行排序
        //Map是一个双列集合,一个元素包含两个值(一个key,一个value),key不允许重复,value可以重复
        while(in.hasNext())
        {
            name = in.next();
            if(name.equals("end")) break;
            map.put(name, map.getOrDefault(name, 0) + 1);
            //put存放key与value,map.getOrDefault:如果 在Map中存在key,则返回key所对应的的value,如果 在Map中不存在key,则返回默认值。
        }
        for(String it : map.keySet())//遍历输出
        {
            System.out.println(it + " " + map.get(it));
        }
    }
}

7-7 sdut-String-6 Java判断合法标识符

输入若干行字符串,判断每行字符串是否可以作为Java语法的合法标识符。

提示:Java标识符的命名规则——字符串允许包括 字母、数字、下划线_、$符号,但是数字不能作为首字母。

输入格式:

输入有多行,每行一个字符串,可能包含空格字符,字符串长度不超过20个字符。

输出格式:

若该行字符串可以作为Java标识符,则输出“true”;否则,输出“false”。

输入样例:

abc
_test
$test
a 1
a+b+c
a’b
123
变量

输出样例:

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

true
true
true
false
false
false
false
true
import java.util.*;
public class Main {
    public static void main(String[] args) { 
        Scanner in = new Scanner(System.in);
        while(in.hasNext()) {
            //得到输字符串并输出
            String s = in.nextLine();
            char part;
            boolean flag = true; //设立标志位
            char first = s.charAt(0);//得到字符串首字符
            //若首字符合法,继续判断后续字符
            if (Character.isJavaIdentifierStart(first)) {
                int len = s.length();//得到字符串长度
                int i;
                for (i = 1; i < len; i++) {
                    part = s.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源文件名称

输入若干行字符串,判断每行字符串是否可以作为Java的源文件名称。其中:

Java源文件的命名规则:合法的 Java标识符+“.java”;

Java标识符的命名规则:可包含字母、数字、下划线、$,但是数字不能作为首字母。

输入格式:

输入有多行,每行一个字符串。

输出格式:

若该行字符串可做为Java的源文件名称,则输出“true”;否则,输出“false”。

输入样例:

abc.java
_test
$test.java
$12.java
a 1.java
a+b+c.java
a’b.java
123.java
变量.java
Main.java.java
ab abc.java

输出样例:

true
false
true
true
false
false
false
false
true
false
false
import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        while (in.hasNext()) {
            String s = in.nextLine();
            if(s.endsWith(".java") && judge(s))
            {
                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 编程题:选修课成绩统计问题

学生选修课成绩统计问题

选修课格次成绩使用字母表示,规则为:A=5,B=4,C=3,D=2,E=1

编写程序统计每个同学两门选修课的分数成绩

输入格式:多个学生的格次成绩使用西文逗号分开,整理为一行;每个学生姓名在前面,格次成绩在后,之间均使用空格分开

数据统计:将每个学生的两门课格次成绩,转换为分数成绩并求和

输出格式:结果为一行,姓名在前总分在后,之间空格分开;不同学生的记录之间使用西文逗号分开,注意最后的记录末尾没有逗号

输入格式:

多个学生的格次成绩使用西文逗号分开,整理为一行;每个学生姓名在前面,格次成绩在后,之间均使用空格分开

输出格式:

结果为一行,姓名在前总分在后,之间空格分开;不同学生的记录之间使用西文逗号分开,注意最后的记录末尾没有逗号

输入样例:

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

zs A B,ls A C,ww B C

输出样例:

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

zs 9,ls 8,ww 7
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-10 将一整个正整数的所有位重新排序,组成一个最大数

输入一个正整数,将这个数的所有位进行重新排序,得出最大的值。

输入格式:

输入一个正整数

输出格式:

输出排序后最大的值

输入样例:

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

19837

输出样例:

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

98731
import java.util.*;
 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]);
    }
}

 

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CRAEN

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值