Java面向对象编程(13)

本文涉及的产品
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
云解析DNS,个人版 1个月
简介: Java面向对象编程(13)

一个关系数据库文件中的各条记录 () 。

A. 前后顺序不能任意颠倒,一定要按照输入的顺序排列

B. 前后顺序可以任意颠倒,不影响库中的数据关系

C. 前后顺序可以任意颠倒,但排列顺序不同,统计处理的结果就可能不同

D. 前后顺序不能任意颠倒,一定要按照关键字字段值的顺序排列

答案:B

一名员工可以使用多台计算机,每台计算机只能由一名员工使用,则实体员工和计算机间的联系是( )

A. 一对多

B. 多对多

C. 多对一

D. 一对一

答案:A

下列关于视图的说法错误的是:

A. 视图是从一个或多个基本表导出的表,它是虚表

B. 视图一经定义就可以和基本表一样被查询、删除和更新

C. 某一用户可以定义若干个视图

D. 视图可以用来定义新的视图

答案:B

在Mysql中,订单表 ( 订单号,雇员代号,地区代号,订购日期 ) 中订单号为主键,要删除订单中前三年以前的信息, SQL 为:

A. delete from订单表where订购日期<getdate()+3

B. delete from订单表where 订购日期<DATEADD(yy,3.getdate())

C. delete from订单表where订购日期<getdate()-3

D.delete from订单表where订购日期<DATEADD(yy,-3,getdate())

答案:D

负责数据库中查询操作的数据库语言是( )。

A. 数据定义语言

B. 数据管理语言

C. 数据操纵语言

D. 数据控制语言

答案:C

数据库管理系统是( )。

A. 操作系统的一部分

B. 在操作系统支持下的系统软件

C. 一种编译系统

D. 一种操作系统

答案:B

SQL 语句中修改表结构的命令是()

A. MODIFY TABLE

B. MODIFY STRUCTURE

C. ALTER TABLE

D. ALTER STRUCTURE

答案:C

在sql数据库中,哪个语句能校验整数列 i 的值不小于 1 不大于 10 ?

A. i BETWEEN 1 AND 10

B. i BETWEEN 0 AND 11

C. i IN INTERVAL(0,11)

D. i IN INTERVAL(1,10)

答案:A

在学生表 Student 的系别 (Sdept) 属性中查询信息系 (IS) 、数学系 (MA) 和计算机系 (CS) 的学生姓名 (Sname) 和性别 (Ssex) ,正确的命名格式应为:

A. SELECT Student FROM Sname, Ssex WHERE Sdept IN (‘IS’, ’MA’, ‘CS’)

B. SELECT Sname, Ssex FROM Student WHERE Sdept IN (‘IS’, ’MA’, ‘CS’)

C. SELECT Sname, Ssex FROM Student WHERE Sdept (IS, MA, CS)

D. SELECT Sname, Ssex FROM Student WHERE Sdept LIKE IS, MA, CS

答案:B

SQL 查询语句中 WHERE 、 GROUP BY 、 HAVING 这些关键字区别和用法总结错误的是()

A. HAVING在查询语句中必须依赖于GROUP BY

B. WHERE子句用来限制SELECT语句从表中指定选取的行

C. GROUP BY子句用来分组WHERE子句的输出结果集

D. HAVING子句用来从分组的结果中筛选列

答案:D

参数解析

题目描述:在命令行输入如下命令:

xcopy /s c:\\ d:\\e,

各个参数如下:

参数1:命令字xcopy

参数2:字符串/s

参数3:字符串c:\\

参数4: 字符串d:\\e

请编写一个参数解析程序,实现将命令行各个参数解析出来。

解析规则:

1.参数分隔符为空格

2.对于用""包含起来的参数,如果中间有空格,不能解析为多个参数。比如在命令行输入xcopy /s "C:\\program files" "d:\"时,参数仍然是4个,第3个参数应 该是字符串C:\\program files,而不是C:\\program,注意输出参数时,需要将""去掉,引号不存在嵌套情况。

3.参数不定长

4.输入由用例保证,不会出现不符合要求的输入 数据范围:字符串长度:1<=N<=1000

进阶:时间复杂度:O(N),空间复杂度:O(N)

输入描述:输入一行字符串,可以有空格

输出描述:输出参数个数,分解后的参数,每个参数都独占一行

public class Main {
    //参数解析
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        String str=scanner.nextLine();
        int count=0;
        //计算空格的个数
        //参数的总个数=空格个数+1 
    for (int i = 0; i < str.length(); i++) {
            //遇到左引号的时候,要一直遍历,直到遇到右引号
            //这样才说明,双引号中的参数遍历完了
            if (str.charAt(i) =='"'){//左引号
                do {
                    i++;
                }while (str.charAt(i)=='"');
            }
            //碰到双引号以外的空格,count++
            if (str.charAt(i)==' '){
                count++;
            }
        }
        //参数的总个数=空格个数+1
        System.out.println(count+1);
        int flag=1;
        for (int i = 0; i < str.length(); i++) {
            //当碰到左引号的时候,falg变为0,当碰到右引号的时候,flag变为1
            //说明在flag==0的时候,我们一直在遍历双引号当中的参数
            if (str.charAt(i)=='"'){
                flag^=1;
                //将flag变为1
            }
            //除了双引号中的空格和双引号,其他字符都输出
            if (str.charAt(i) !=' '&& str.charAt(i) !='"'){
                System.out.print(str.charAt(i));
            }
            //双引号里面的空格需要输出
            if (str.charAt(i)==' ' && flag==0){
                System.out.print(str.charAt(i));
            }
            //碰到双引号以外的空格要换行
            if (str.charAt(i)==' '&& flag==1){
                System.out.println();
            }
        }
    }
}
//xcopy /s c:\\ d:\\e

跳石板

题目描述:小易来到了一条石板路前,每块石板上从1挨着编号为:1、2、3.......

这条石板路要根据特殊的规则才能前进:对于小易当前所在的编号为K的 石板,小易单次只能往前跳K的一个约数(不含1和K)步,即跳到K+X(X为K的一个非1和 本身的约数)的位置。 小易当前处在编号为N的石板,他想跳到编号恰好为M的石板去,小易想知道最少需要跳跃几次可以到达。

例如: N = 4,M = 24:

4->6->8->12->18->24

于是小易最少需要跳跃5次,就可以从4号石板跳到24号石板

输入描述:输入为一行,有两个整数N,M,以空格隔开。 (4 ≤ N ≤ 100000) (N ≤ M ≤ 100000)

输出描述:输出小易最少需要跳跃的步数,如果不能到达输出-1

public class Main2 {
    //跳石板
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        int n=scanner.nextInt();
        int m=scanner.nextInt();
        //有m块石板,为了将石板的编号,与数组的下标对应在一起,所以,定义数组的长度为m+1
        int[] step=new int[m+1];
        for (int i = 0; i < m+1; i++) {
            step[i]=Integer.MAX_VALUE;//赋初始值
        }
        //从第n块石板开始跳跃
        step[n]=0;
        for (int i = n; i < m; i++) {
            if (step[i]==Integer.MAX_VALUE){
                //如果是最大值,那么,没有办法跳跃到该位置处
                continue;
            }
            //i代表当前石板的编号
            List<Integer> list=div(i);
            //j代表一次可以跳几块石板
            for (int j:list) {
                if (i+j<=m && step[i+j]!=Integer.MAX_VALUE){
                    step[i+j]=Math.min(step[i+j],step[i]+1);
                    //最小值
                }else if (i+j<=m){
                    step[i+j]=step[i]+1;
                }
            }
        }
        if (step[m]==Integer.MAX_VALUE){
            System.out.println(-1);
        }else {
            System.out.println(step[m]);
        }
    }
    //求 i 的约数 ,List<Integer>相当于一个数组,用来存放约数
    public static List<Integer> div(int num){
        List<Integer> list=new ArrayList<>();
        for (int i = 2; i*i <= num; i++) {
            if (num % i ==0){
                list.add(i);
                //与i相对应的num/i也是约数,但是需要注意的是i不能相同!!
                if (num/i !=i){
                    list.add(num/i);
                }
            }
        }
        return list;
    }
}
相关文章
|
28天前
|
Java
Java面向对象编程新篇章:多态,你准备好了吗?
【6月更文挑战第17天】Java的多态性是面向对象编程的核心,它允许通过统一的接口处理不同类型的对象。例如,在一个虚拟宠物游戏中,抽象类`Pet`定义了`speak()`方法,猫、狗和鹦鹉等子类各自重写此方法以实现独特叫声。在`main`方法中,使用`Pet`类型的引用创建子类对象并调用`speak()`,多态机制确保调用实际对象的方法,实现代码的灵活性和可扩展性。通过多态,我们能以更低的耦合度和更高的复用性编写更优雅的代码。
|
29天前
|
Java
Java 面向对象编程:父类与子类的“传承”与“创新”之路
【6月更文挑战第16天】Java 中的父类与子类展示了面向对象的“传承”与“创新”。子类`Dog`继承`Animal`,获取其属性和方法如`name`和`makeSound`。子类通过`@Override`增强`makeSound`,显示多态性。设计父类时应考虑普遍性,子类创新专注自身特性,遵循继承最佳实践,利用复用提升效率,构建可维护的软件系统。
|
1月前
|
Java 安全 索引
滚雪球学Java(48):面向对象编程中的StringBuffer类详解
【6月更文挑战第2天】🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
33 5
滚雪球学Java(48):面向对象编程中的StringBuffer类详解
|
29天前
|
存储 安全 Java
深入探讨 Java 封装机制:为何它是面向对象编程的核心?
【6月更文挑战第16天】Java的封装是OOP核心,它将数据和操作数据的方法打包在类中,隐藏实现细节并提供公共接口。例如,`Student`类封装了私有属性`name`和`age`,通过`get/set`方法安全访问。封装提升代码稳定性、可维护性和复用性,防止外部直接修改导致的错误,确保数据安全。它是面向对象编程优于传统编程的关键,促进高效、可靠的开发。
|
27天前
|
Java 数据安全/隐私保护 开发者
Java是一种完全支持面向对象编程的语言,其面向对象特性包括封装、继承、多态和抽象等
【6月更文挑战第18天】**面向对象编程(OOP)通过对象封装状态和行为,实现问题域的抽象。Java全面支持OOP,核心特性包括**: - **封装**:保护数据安全,隐藏内部细节。 - **继承**:子类继承父类属性和行为,促进代码重用。 - **多态**:一个接口多种实现,增强灵活性和扩展性。 - **抽象**:通过接口和抽象类抽离共性,简化复杂性。 **Java的OOP便于理解和解决复杂系统问题。**
30 3
|
26天前
|
Java 开发者
Java面向对象编程(OOP)的四个主要概念
【6月更文挑战第19天】Java OOP的基石是封装、抽象、继承和多态。封装是通过类隐藏数据细节;抽象简化复杂性,用接口和抽象类实现;继承让子类从父类继承属性和行为,促进代码重用;多态一个接口可有多种形态,分编译时和运行时。这些概念支持灵活且可扩展的软件设计。
21 1
|
29天前
|
Java
Java 面向对象编程大揭秘:子类如何“继承”父类,摇身一变成为“新贵”?!
【6月更文挑战第16天】Java中的继承允许子类从父类继承特性与功能,如`Dog`继承`Animal`,重写`makeSound`方法,展现独特行为。同样,`Circle`继承`Shape`,定制`draw`方法以绘制圆形。继承提高了代码复用和灵活性,使子类能基于父类基础创新,如同接力赛中父类传递接力棒,子类创造新辉煌。在Java世界,继承是构建复杂项目的关键机制,有待深入探索。
|
2月前
|
Java 编译器 数据库
滚雪球学Java(40):解读Java面向对象编程中的方法和继承,打造可维护的代码库
【5月更文挑战第15天】🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
35 4
滚雪球学Java(40):解读Java面向对象编程中的方法和继承,打造可维护的代码库
|
2月前
|
Java
深入探索Java语言的面向对象编程
深入探索Java语言的面向对象编程
|
2月前
|
Java 编译器
Java面向对象编程:构造方法详解
Java面向对象编程:构造方法详解
37 2