Java面向对象编程(16)

简介: Java面向对象编程(16)

在关系型是数据库中,有两个不同的事务同时操作数据库中同一表的同一行,不会引起冲突的是:

A. 其中一个DELETE操作,一个是SELECT操作

B. 其中两个都是UPDATE

C. 其中一个是SELECT,一个是UPDATE

D. 其中一个SELECT

E. 其中一个是DELETE,另一个是UPDATE

F. 两个都是DELETE

答案:F

计算每位学生的多学科加总成绩的SQL是_____

A. select sum(score) as total,stud_name from [成绩表](nolock)

B. select count(score) as total,stud_name from [成绩表](nolock)

C. select sum(score) as total,stud_name from [成绩表](nolock) group by stud_name

D. select count(score) as total,stud_name from [成绩表](nolock) group by stud_name

答案:C

以下哪个不是与Mysql服务器相互作用的通讯协议()

A. TCP/IP

B. UDP

C. 共享内存

D. Socket

答案:B

公司中有多个部门和多名职员,每个职员只能属于一个部门,一个部门可以有多名职员。则实体部门和职员间的联系是()

A. 1:1联系

B. m:1联系

C. 1:m联系

D. m:n联系

答案:C

设有两个事务T1,T2,其并发操作如下所示,下面评价正确的是()

A. 该操作不能重复读

B. 该操作不存在问题

C. 该操作读"脏"数据

D. 该操作丢失修改

答案:D

mysql 数据库有选课表 learn(student_id int,course_id int),字段分别表示学号和课程编号, 现在想获取每个学生所选课程的个数信息,请问如下的 sql 语句正确的是()

A. select student_id,sum(course_id)from learn

B. select student_id,count(course_id)from learn group by student_id

C. select student_id,count(course_id)from learn

D. select student_id,sum(course_id)from learn group by student_id

答案:B

如果事务T获得了数据项Q上的排它锁,则T对Q______。

A. 只能读不能写

B. 只能写不能读

C. 既可读又可写

D. 不能读不能写

答案:C

在关系模型中,实现“表示了两个关系之间的相关联系”的约束是通过()

A. 候选键

B. 主键

C. 外键

D. 超键

答案:C

学生关系模式S(S#,Sname,Sex,Age),S的属性分别表示学生的学号、姓名、性别、年龄。要在表S中删除一个属性“年龄”,可选用的SQL语句是()

A. ALTER TABLE S DROP Age

B. ALTER TABLE S ‘Age’

C. UPDATE S Age

D. DELETE Age from S

答案:A

下列选项中,不属于SQL约束的是:

A. UNIQUE

B. PRIMARY KEY

C. FOREIGN KEY

D. BETWEEN

答案:D

完全数计算

题目描述:完全数(Perfect number),又称完美数或完备数,是一些特殊的自然数。

它所有的真因子(即除了自身以外的约数)的和(即因子函数),恰好等于它本身。

例如:28,它有约数1、2、4、7、14、28,除去它本身28外,其余5个数相加,1+2+4+7+14=28。

输入n,请输出n以内(含n)完全数的个数。

数据范围:1<=n<=5*10^5

输入描述:输入一个数字n

输出描述:输出不超过n的完全数的个数

输入:1000

输出:3

方法1:


public class Main7 {
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        while (scanner.hasNext()){
            int n=scanner.nextInt();
            int count=0;
            for (int i = 2; i <= n ; i++) {
                int sum=0;
                for (int j = 2; j*j <= i ; j++) {
                    if (i%j==0){
                        if (i/j==i){
                            sum=sum+j;
                        }else {
                            sum=sum+j+i/j;
                        }
                    }
                }
                if (sum+1==i){
                    count++;
                }
            }
            System.out.println(count);
        }
    }
}

方法2


public class Main8 {
    //完全数计算
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        int n=scanner.nextInt();
        int count=0;
        for (int i = 1; i < n; i++) {
            if (find(i)){
                count++;
            }
        }
        System.out.println(count+1);
    }
    public static Boolean find(int n){
        Stack<Integer> stack=new Stack<>();
        for (int i = 1; i < n; i++) {
            if (n % i==0){
                stack.push(i);
            }
        }
        int sum=0;
        while (!stack.isEmpty()){
            sum=sum+stack.pop();
        }
        if (sum==n){
            return true;
        }
        return false;
    }
}

扑克牌大小

扑克牌游戏大家应该都比较熟悉了,一副牌由54张组成,含3~A、2各4张,小王1张,大王1张。牌面从小到大用如下字符和字符串表示(其中,小写joker表示 小王,大写JOKER表示大王):

3 4 5 6 7 8 9 10 J Q K A 2 joker JOKER

输入两手牌,两手牌之间用"-"连接,每手牌的每张牌以空格分隔,"-"两边没有空格,如:4 4 4 4-joker JOKER。

请比较两手牌大小,输出较大的牌,如果不存在比较关系则输出ERROR。

基本规则:

(1)输入每手牌可能是个子、对子、顺子(连续5张)、三个、炸弹(四个)和对王中的一种,不存在其他情况,由输入保证两手牌都是合法的,顺子已经从小 到大排列;

(2)除了炸弹和对王可以和所有牌比较之外,其他类型的牌只能跟相同类型的存在比较关系(如,对子跟对子比较,三个跟三个比较),不考虑拆牌情况 (如:将对子拆分成个子);

(3)大小规则跟大家平时了解的常见规则相同,个子、对子、三个比较牌面大小;顺子比较最小牌大小;炸弹大于前面所有的牌,炸弹之间比较牌面大小;对 王是最大的牌;

(4)输入的两手牌不会出现相等的情况。

数据范围:字符串长度:3<=length<=10

输入描述:输入两手牌,两手牌之间用"-"连接,每手牌的每张牌以空格分隔,"-"两边没有空格,如 4 4 4 4-joker JOKER。

输出描述:输出两手牌中较大的那手,不含连接符,扑克牌顺序不变,仍以空格隔开;如果不存在比较关系则输出ERROR。

输入:4 4 4 4-joker JOKER

输出:joker JOKER

public class Main9 {
    //扑克牌大小
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        String str=scanner.nextLine();
        String[] pp=str.split("-");
        String[] p1=pp[0].split(" ");
        String[] p2=pp[1].split(" ");
        String p="34567891JQKA2";
        if (pp[0].equals("joker JOKER") || pp[1].equals("joker JOKER")){
            System.out.println("joker JOKER");
        }else if (p1.length==p2.length){
            if (p.indexOf(p1[0].substring(0,1))>p.indexOf(p2[0].substring(0,1))){
                System.out.println(pp[0]);
            }else {
                System.out.println(pp[1]);
            }
        }else if (p1.length==4){
            System.out.println(pp[0]);
        }else if (p2.length==4){
            System.out.println(pp[1]);
        }else {
            System.out.println("ERROR");
        }
    }
}
相关文章
|
3月前
|
Java 开发者
在Java面向对象编程的广阔海洋中,多态犹如一股深邃的潜流,它推动着代码从单一走向多元,从僵化迈向灵活。
在Java面向对象编程的广阔海洋中,多态犹如一股深邃的潜流,它推动着代码从单一走向多元,从僵化迈向灵活。
41 7
|
3月前
|
Java 开发者
那些年,我们一同踏入Java编程的大门,多态,这个充满魔法的名字,曾无数次点亮我们探索面向对象编程的热情。
那些年,我们一同踏入Java编程的大门,多态,这个充满魔法的名字,曾无数次点亮我们探索面向对象编程的热情。
48 5
|
3月前
|
Java 程序员
Java中的继承和多态:理解面向对象编程的核心概念
【8月更文挑战第22天】在Java的世界中,继承和多态不仅仅是编程技巧,它们是构建可维护、可扩展软件架构的基石。通过本文,我们将深入探讨这两个概念,并揭示它们如何共同作用于面向对象编程(OOP)的实践之中。你将了解继承如何简化代码重用,以及多态如何为程序提供灵活性和扩展性。让我们启程,探索Java语言中这些强大特性的秘密。
|
5月前
|
Java
Java面向对象编程新篇章:多态,你准备好了吗?
【6月更文挑战第17天】Java的多态性是面向对象编程的核心,它允许通过统一的接口处理不同类型的对象。例如,在一个虚拟宠物游戏中,抽象类`Pet`定义了`speak()`方法,猫、狗和鹦鹉等子类各自重写此方法以实现独特叫声。在`main`方法中,使用`Pet`类型的引用创建子类对象并调用`speak()`,多态机制确保调用实际对象的方法,实现代码的灵活性和可扩展性。通过多态,我们能以更低的耦合度和更高的复用性编写更优雅的代码。
36 3
|
5月前
|
Java
Java 面向对象编程:父类与子类的“传承”与“创新”之路
【6月更文挑战第16天】Java 中的父类与子类展示了面向对象的“传承”与“创新”。子类`Dog`继承`Animal`,获取其属性和方法如`name`和`makeSound`。子类通过`@Override`增强`makeSound`,显示多态性。设计父类时应考虑普遍性,子类创新专注自身特性,遵循继承最佳实践,利用复用提升效率,构建可维护的软件系统。
152 57
|
3月前
|
存储 前端开发 JavaScript
【前端学java】面向对象编程基础-类的使用(4)
【8月更文挑战第9天】面向对象编程基础-类的使用
19 0
【前端学java】面向对象编程基础-类的使用(4)
|
3月前
|
Java 程序员 开发者
Java的面向对象编程:从基础到深入
【8月更文挑战第21天】在本文中,我们将探讨Java的面向对象编程(OOP)的核心概念,包括类、对象、继承、多态和封装。我们将通过实例和比喻,以通俗易懂的方式,深入理解这些概念的内涵和意义,以及它们如何影响我们的编程思维和实践。无论你是初学者还是有经验的开发者,这篇文章都将帮助你更深入地理解Java的OOP,并启发你思考如何在你的项目中应用这些概念。
|
4月前
|
Java API 项目管理
Java中的函数式编程与传统面向对象编程对比
Java中的函数式编程与传统面向对象编程对比
|
5月前
|
Java 安全 索引
滚雪球学Java(48):面向对象编程中的StringBuffer类详解
【6月更文挑战第2天】🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
62 5
滚雪球学Java(48):面向对象编程中的StringBuffer类详解
|
5月前
|
存储 安全 Java
深入探讨 Java 封装机制:为何它是面向对象编程的核心?
【6月更文挑战第16天】Java的封装是OOP核心,它将数据和操作数据的方法打包在类中,隐藏实现细节并提供公共接口。例如,`Student`类封装了私有属性`name`和`age`,通过`get/set`方法安全访问。封装提升代码稳定性、可维护性和复用性,防止外部直接修改导致的错误,确保数据安全。它是面向对象编程优于传统编程的关键,促进高效、可靠的开发。
59 7