PTA--《面向对象程序设计》作业4-API

目录

一:程序填空

5-1:输入一行字符,请分别统计出英文字母、数字、空格和其他字符个数

5-2:实现字符串大小写的转换并倒序输出。

 5-3:从键盘输入两个日期,格式如:2022-06-18。判断两个日期的先后,并输出它们之间间隔的天数、周数(不足一周按0计算)。

 二:函数题

6-1:字符串加密程序

三:编程题

7-1:矩阵相加

7-2:NCHU_学号识别


一:程序填空

5-1:输入一行字符,请分别统计出英文字母、数字、空格和其他字符个数

import java.util.Scanner;

public class Main2 {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        String str=sc.nextLine();
        char x[]=str.toCharArray();
        int a=0;
        int b=0;
        int c=0;
        int d=0;
        for (int i = 0; i < str.length(); i++) {
            char ch = x[i];
            if(ch>='a'&&ch<='z'||ch>='A'&&ch<='Z'){
                a++;
            } else if (ch>='0'&&ch<='9') {
                b++;
            }else if(ch==' '){
                c++;
            }else {
                d++;
            }
        }
        System.out.println("letters="+a);//输出英文字母个数
        System.out.println("digits="+b);//输出数字个数
        System.out.println("spaces="+c);//输出空格个数
        System.out.println("others="+d);//输出其他字符个数
    }
}

5-2:实现字符串大小写的转换并倒序输出。

import java.util.Scanner;

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

        Scanner sc = new Scanner(System.in);
        String str = sc.next();
        StringBuffer sb = new StringBuffer();
        String s1 = null;

        for (int i = str.length() - 1; i >= 0; i--) {
            char curChar = str.charAt(i);
            if (curChar >= 'a' && curChar <= 'z') {
                s1 = String.valueOf(sb.append(String.valueOf(curChar).toUpperCase()));
            } else if (curChar >= 'A' && curChar <= 'Z') {
                s1 = String.valueOf(sb.append(String.valueOf(curChar).toLowerCase()));
            } else {
                s1 = String.valueOf(curChar);
                sb.append(curChar);
            }
        }

        System.out.println(sb.toString());
    }
}

 5-3:从键盘输入两个日期,格式如:2022-06-18。判断两个日期的先后,并输出它们之间间隔的天数、周数(不足一周按0计算)。

输入样例1:

2000-02-18
2000-03-15

输出样例1:

第一个日期比第二个日期更早
两个日期间隔26天
两个日期间隔3周 

预备知识:通过查询Java API文档,了解Scanner类中nextLine()等方法、String类中split()等方法、Integer类中parseInt()等方法的用法,了解LocalDate类中of()、isAfter()、isBefore()、until()等方法的使用规则,了解ChronoUnit类中DAYS、WEEKS、MONTHS等单位的用法。

import java.time.LocalDate;
import java.time.temporal.ChronoUnit;
import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        String s1 = sc.nextLine();
        String s2 = sc.nextLine();

        String [] dateStr1 = s1.split("-");
        String [] dateStr2 = s2.split("-");

        int year1 = Integer.parseInt( dateStr1[0] );
        int month1 = Integer.parseInt( dateStr1[1] );
        int day1 = Integer.parseInt(dateStr1[2]);

        int year2 = Integer.parseInt( dateStr2[0] );
        int month2 = Integer.parseInt( dateStr2[1] );
        int day2 = Integer.parseInt( dateStr2[2] );

        LocalDate date1 = LocalDate.of(year1, month1, day1);
        LocalDate date2 = LocalDate.of(year2,month2,day2);

        if (date1.isAfter(date2)) {
            System.out.println("第一个日期比第二个日期更晚");
        } else {
            System.out.println("第一个日期比第二个日期更早");
        }

        long dayCount = date1.until(date2,ChronoUnit.DAYS) ;
        long weekCount = date1.until(date2, ChronoUnit.WEEKS);

        System.out.println("两个日期间隔" + Math.abs(dayCount) + "天" );
        System.out.println("两个日期间隔" + Math.abs(weekCount) + "周" );
        sc.close();
    }
}

 二:函数题

6-1:字符串加密程序

现需要设计一个字符串加密程序String getHint(String str, String key),该程序接收两个字符串变量分别为str和key,加密规则如下:

1.当str与key相同位置字符相同时,显示该字符;
2.当str与key相同位置字符不同且str中出现key中包含的字符时,str中该字符加密为+;
3.当str中某个字符不存在上述两种情况的字符加密为*。

函数调用示例:

getHint("AAAAA","HARPS");   //+A+++
getHint("HELLO","HARPS");   //H****
getHint("HEART","HARPS");   //H*++*

说明:只需要补全public static String getHint(String str, String key)静态方法即可

输入样例:

 AAAAA
HARPS

输出样例:

 +A+++

裁判测试程序样例:

import java.util.Scanner;
 
public class Main {
    
    public static String getHint(String str, String key)
    {
        /* 请在这里填写答案 */
    }
    
    public static void main(String[] args) {
        Scanner in=new Scanner(System.in);
        String str=in.nextLine();
        String key=in.nextLine();
        
        System.out.println(getHint(str,key));
    }
}

 答案代码如下:

StringBuffer sb = new StringBuffer();
        for (int i = 0; i < str.length(); i++) {
                char ch1 = str.charAt(i);
                char ch2 = key.charAt(i);
                if (ch1 == ch2) {
                    sb.append(ch1);
                } else if (key.indexOf(ch1) != -1) {
                    sb.append("+");
                } else {
                    sb.append("*");
                }
            }
        return sb.toString();

三:编程题

7-1:矩阵相加

求矩阵A+B的结果,程序给出部分代码,请在原来代码基础上填写完整,完成整个程序。

输入格式:
第一行通过键盘输入矩阵的行数和列数
第二行通过键盘输入矩阵A的元素,中间用空格隔开
第三行通过键盘输入矩阵B的元素 ,中间用空格隔开

输出格式:
输出矩阵相加的结果,每一行输出矩阵一行,每一个元素前面有一个空格

输入样例:

2 3
1 2 3 4 5 6
2 3 4 5 6 7

输出样例:

 3 5 7
 9 11 13

答案代码如下:

import java.util.Scanner;//矩阵相加 C = A + B //写出方法调用
public class Main {
    public static Scanner scan = new Scanner(System.in);
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        int m = scan.nextInt();//矩阵的行
        int n = scan.nextInt();//矩阵的列
        //创建二维数组a  行m,列n
        int[][] a = new int[m][n];
        //调用方法 为a输入数据
        inputData(a);
        //创建二维数组b 行m,列n
        int[][] b = new int[m][n];
        //调用方法,为b输入数据
        inputData(b);
        //调用方法 求 a+b
        int[][] d = addMatrix(a,b);
        //输出结果
        showResult(d);
    }
    public static void inputData(int[][] arr){
        for(int i =0;i<arr.length;i++)
            for(int j=0;j<arr[i].length;j++)
                arr[i][j] =scan.nextInt();
    }
    public static int[][] addMatrix(int[][]arr1,int[][]arr2){
        int [][] c = new int[arr1.length][arr1[0].length];
        for(int i =0;i<arr1.length;i++)
            for(int j =0;j<arr1[i].length;j++)
                c[i][j] = arr1[i][j] + arr2[i][j];
        return c;
    }
    public static void showResult(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]);
            System.out.println();
        }
    }
}

7-2:NCHU_学号识别

学校的学号由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) {
        Scanner sc = new Scanner(System.in);
        String xuehao = sc.next();
        if(xuehao.length()!=8){
            System.out.println("Wrong Format");
            return;
        }

        String xuehao1 = xuehao.substring(2,4);
        if("01".equals(xuehao1)){
            xuehao1 = "材料学院";
        }else if("02".equals(xuehao1)){
            xuehao1 = "机械学院";
        } else if ("03".equals(xuehao1)) {
            xuehao1 = "外语学院";
        } else if ("20".equals(xuehao1)) {
            xuehao1 = "软件学院";
        }else{
            System.out.println("Wrong Format");
            return;
        }

        System.out.println("入学年份:"+"20"+xuehao.substring(0,2)+"年");
        System.out.println("学院:"+xuehao1);
        System.out.println("班级:"+xuehao.substring(4,6));
        System.out.print("学号:"+xuehao.substring(6,8));
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/606841.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

中间件之异步通讯组件RabbitMQ进阶

这里我们必须尽可能确保MQ消息的可靠性&#xff0c;即&#xff1a;消息应该至少被消费者处理1次 那么问题来了&#xff1a; 我们该如何确保MQ消息的可靠性&#xff1f; 如果真的发送失败&#xff0c;有没有其它的兜底方案&#xff1f; 首先&#xff0c;我们一起分析一下消息…

多模态大模型MLLM VIT CLIP BLIP

一、Vit模型介绍 Vit&#xff08;Vision Transformer&#xff09;即将Transformer应用于视觉领域。 Transformer输入输出都是一个序列&#xff0c;若需要应用于视觉领域&#xff0c;则需要考虑如何将一个2d图片转化为一个1d的序列&#xff0c;最直观的想法将图片中的像素点输…

Logit Standardization in Knowledge Distillation 知识蒸馏中的logit标准化

摘要 知识蒸馏涉及使用基于共享温度的softmax函数将软标签从教师转移到学生。然而&#xff0c;教师和学生之间共享温度的假设意味着他们的logits在logit范围和方差方面必须精确匹配。这种副作用限制了学生的表现&#xff0c;考虑到他们之间的能力差异&#xff0c;以及教师天生…

旺店通·企业奇门和金蝶云星空单据接口对接

旺店通企业奇门和金蝶云星空单据接口对接 源系统:金蝶云星空 金蝶K/3Cloud&#xff08;金蝶云星空&#xff09;是移动互联网时代的新型ERP&#xff0c;是基于WEB2.0与云技术的新时代企业管理服务平台。金蝶K/3Cloud围绕着“生态、人人、体验”&#xff0c;旨在帮助企业打造面向…

Web3 ETF软件开发

开发Web3 ETF软件涉及到金融、法律和技术等多个领域的专业知识&#xff0c;因此存在以下技术难点&#xff0c;开发Web3 ETF软件是一项复杂的技术挑战&#xff0c;需要综合考虑各种因素。开发人员需要具备较强的技术能力和跨学科知识才能成功开发Web3 ETF软件。北京木奇移动技术…

解决$‘\r‘: command not found 或syntax error near unexpected token `$‘\r‘的四个方法

问题原因&#xff1a; 两个报错原因都是Linux和windows下的回车换行符不兼容 解决方法&#xff1a; 方法一&#xff1a;在windows系统可以用文本编辑器查看所有字符&#xff0c;例如notepad&#xff0c;编辑->档案格式转换->转换为UNIX格式 方法二&#xff1a;在Linux系…

uniapp读取项目本地文件/json文件/txt文件

uniapp读取项目本地文件/json文件/txt文件 文件必须放在static目录下 方法&#xff1a; /*** 访问static里面的文件* param url 文件路径 必须在static目录下*/ function localFetch(url) {return new Promise((resolve, reject) > {plus.io.resolveLocalFileSystemURL(_ww…

【LeetCode】链表oj专题

前言 经过前面的学习&#xff0c;咋们已经学完了链表相关知识&#xff0c;这时候不妨来几道链表算法题来巩固一下吧&#xff01; 如果有不懂的可翻阅之前文章哦&#xff01; 个人主页&#xff1a;小八哥向前冲~-CSDN博客 数据结构专栏&#xff1a;数据结构【c语言版】_小八哥…

HCIP-Datacom-ARST必选题库_OSPF【道题】

某工程师利用2台路由器进行IPv6测试&#xff0c;他想要通过运行OSPFv3实现IPv6网络的互联互通。关于R1需要进行的OSPPv3相关配置&#xff0c;正确的有? [R1] router id 10.1.1.1A [R1-Giqabi tEthernet0/0/1] ospfv3 1 area 0 [R1-ospfv3-11 router-id 10.1.1.1 [R1-ospfv3…

AcWing 835:Trie字符串统计 ← 字典树(Trie树)模板题

【题目来源】https://www.acwing.com/problem/content/837/【题目描述】 维护一个字符串集合&#xff0c;支持两种操作&#xff1a; ● I x 向集合中插入一个字符串 x&#xff1b; ● Q x 询问一个字符串在集合中出现了多少次。 共有 N 个操作&#xff0c;所有输入的字符…

【JAVA】类加载过程,以及类加载器

类加载过程&#xff0c;以及类加载器 一、类加载的过程二、类加载器介绍三、跨类加载三、举例说明 一、类加载的过程 类加载是Java虚拟机&#xff08;JVM&#xff09;将类文件加载到内存中并转换成对应的类对象的过程。它确保了类文件能够正确加载并转换成可执行的类对象&…

SpringSecurity源码分析(RemeberMe)

RememberMeServices RememberMeServices 记住我的服务的接口 可以重写实现自己的记住我 public interface RememberMeServices { //建议 org. springframework. security. authentication. RememberMeAuthenticationToken 在大多数情况下使用它&#xff0c;因为它具有相应的身份…

如何在您的WordPress网站上安装和设置Yoast seo?

本周有一个客户&#xff0c;购买Hostease的虚拟主机&#xff0c;询问我们的在线客服&#xff0c;如何在您的WordPress网站上安装和设置Yoast seo?我们为用户提供相关教程&#xff0c;用户很快解决了遇到的问题。在此&#xff0c;我们分享这个操作教程&#xff0c;希望可以对您…

如何利用AI技术提升内容生产的效率和质量

目录 前言1 自动化内容生成1.1 文章生成1.2 视频制作1.3 音频合成 2 内容分发与推广2.1 智能内容推荐2.2 社交媒体管理 3 内容分析与优化3.1 用户反馈分析3.2 内容效果评估 结语 前言 在当今数字化时代&#xff0c;人工智能&#xff08;AI&#xff09;技术对内容生产、分发和优…

Linux:进程通信(三)信号的捕捉

目录 一、信号捕捉函数 1、signal函数 2、sigaction函数 二、用户态与内核态 1、用户态 2、内核态 用户态与内核态转换 三、volatile关键字 四、SIGCHLD信号 一、信号捕捉函数 1、signal函数 signal函数是C语言标准库中的一个函数&#xff0c;用于处理Unix/Linux系…

数据结构——二叉排序树

懒猫老师-数据结构-(58)二叉排序树的删除(二叉查找树)_哔哩哔哩_bilibili 概念 (1)若它的左子树不空&#xff0c;则左子树上所有结点的值均小于根结点的值; (2)若它的右子树不空&#xff0c;则右子树上所有结点的值均大于根结点的值; (3)它的左右子树也都是二叉排序树。 通…

顶级开源Kubernetes管理工具有哪些?好用Kubernetes工具推荐

Kubernetes已经成为容器编排领域颠覆性的技术&#xff0c;而充满活力的开源社区是其成功背后的推动力。本文将为大家推荐好用的Kubernetes工具&#xff0c;围绕Kubernetes发展的生态系统的广度和深度。 从自动化和监控到网络和安全性&#xff0c;这些工具为管理容器化应用程序…

Python入门到精通,一个月就够了!前字节大佬超详细系统学习路线

毫无疑问&#xff0c;Python 是当下最火的编程语言之一。 对于许多未曾涉足计算机编程的领域「小白」来说&#xff0c;深入地掌握 Python 看似是一件十分困难的事。 感觉很迷茫&#xff1f;学了一段时间还是不入流&#xff1f;很大一部分原因是因为你没有一个完整的知识体系&…

WebSocket 来单提醒和客户催单功能

一&#xff1a;WebSocket &#xff1a; WebSocket 是基于 TCP 的一种新的网络协议。它实现了浏览器与服务器全双工通信——浏览器和服务器只需要完成一次握手&#xff0c;两者之间就可以创建持久性的连接&#xff0c; 并进行双向数据传输。 HTTP协议和WebSocket协议对比&#…

c 双向链表

图片 #include <stdio.h> #include <stdlib.h> #include <string.h>int main(void){ struct film{char name[20];int id;struct film *pre; //前向指针struct film *next; //后向指针 };struct film *headNULL;struct film *ls,*lspre,*work;in…
最新文章