当前位置: 首页 > news >正文

TYUTJava阶段测试

第一次

  1. Java源程序文件的扩展名为()
    答案:.java
    解析:在 Java 中,程序员编写的源代码文件通常以 .java 作为扩展名,例如 HelloWorld.java 。
     
  2. 编译Java源代码(.java)文件的工具为()
    答案:javac
    解析:javac 是 Java 编译器,用于将 .java 源文件编译成字节码文件(.class)。例如在命令行中执行 javac HelloWorld.java 就可以完成编译。
     
  3. 执行Java字节码(.class)文件的工具为()
    答案:java
    解析:java 命令用于执行编译后的 .class 文件。比如执行 java HelloWorld 就能运行 HelloWorld.class 文件。
     
  4. main方法是Java Application程序执行的入口点,关于main方法头,哪项是合法的()
    答案:public static void main(String[] args)
    解析:这是 Java 中标准的 main 方法签名。public 表示该方法可以被任何类访问;static 意味着它属于类而非类的实例;void 表示该方法不返回任何值;main 是方法名;String[] args 是一个字符串数组,用于接收命令行参数。
     
  5. 在使用Eclipse开发Java程序之前,必须安装()
    答案:JDK(Java Development Kit)
    解析:JDK 包含了 Java 编译器、Java 虚拟机等开发和运行 Java 程序所需的工具和环境,Eclipse 只是一个集成开发环境(IDE),需要依赖 JDK 来编译和运行 Java 程序。
     
  6. 对于一个三位的正整数 n,取出它的十位数字k(k为整型)的表达式是()
    答案:(n / 10) % 10
    解析:n / 10 会将整数 n 除以 10,去掉个位数字,然后对结果取模 10,就可以得到原来数字的十位数字。
     
  7. 现有一个变量声明为boolean aa;下面赋值语句中正确的是()
    答案:aa = true; 或者 aa = false;
    解析:boolean 类型的变量只能被赋值为 true 或 false
     
  8. 下列数据类型的精度由高到低的顺序是()
    答案:double > float > long > int > short > byte
    解析:double 是双精度浮点数,精度最高;float 是单精度浮点数;long 是长整型;int 是整型;short 是短整型;byte 是字节型,精度最低。
     
  9. 以下的选项中能正确表示Java语言中的一个整型常量的是()
    答案:例如 123 、0x1F(十六进制)、012(八进制)等
    解析:Java 中的整型常量可以是十进制、十六进制(以 0x 开头)、八进制(以 0 开头)等形式。
     
  10. 下面不正确的变量名是()

    答案:例如 123abc (不能以数字开头)、class (不能是 Java 关键字)等
    解析:Java 变量名必须以字母、下划线(_)或美元符号($)开头,不能使用 Java 关键字。
     
  11. 下面哪个标识符是合法的(D)

    答案:例如 myVariable 、_count 、$value 等,B 选项:标识符中不能包含 + 这样的运算符
    解析:标识符需以字母、下划线或美元符号开头,后面可以跟字母、数字、下划线或美元符号,且不能是 Java 关键字。
  12. 指出下列类型转换中正确的是(D)

    A 选项int i=8.3; 错误,8.3 是 double 类型(小数默认是 double 类型 ),将 double 类型直接赋值给 int 类型会丢失精度且不符合语法规则,需要强制类型转换,如 int i = (int)8.3; 。
    B 选项long L=8.4f; 错误,8.4f 是 float 类型,不能直接赋值给 long 类型,需要强制类型转换,如 long L = (long)8.4f; 。
    C 选项int i=(boolean)8.9; 错误,boolean 类型和数值类型(如 int 、double 等)之间不能进行类型转换,它们属于不同的数据类型体系。
    答案:例如 int a = 10; double b = (double)a; (小范围转大范围自动转换,大范围转小范围需强制转换)
    解析:当把一个小范围的数据类型赋值给大范围的数据类型时,Java 会自动进行类型转换;反之,则需要使用强制类型转换。
  13. 已知x和y均为boolean型变量,则x && y的值为true的条件是什么? ()
    答案:x 和 y 都为 true
    解析:&& 是逻辑与运算符,只有当两个操作数都为 true 时,结果才为 true
     
  14. 有一个类A,以下为其构造方法的声明,其中正确的是?(B)

    答案:public A() {} 或 public A(int param) {} 等
    解析:构造方法的名称必须与类名相同,且没有返回类型(包括 void )。
  15. 设有定义float x=3.5f, y=4.6f, z=5.7f;则以下的表达式中,值为true的是()

    A 选项x>y || x>z ,已知 x = 3.5fy = 4.6fz = 5.7f ,x>y 为 false(因为 3.5f < 4.6f ),x>z 为 false(因为 3.5f < 5.7f ),|| 是逻辑或运算符,只有当两个操作数都为 false 时结果才为 false ,所以该表达式值为 false 。
    B 选项x!= y ,由于 x = 3.5f ,y = 4.6f ,两者不相等,!= 是不等于运算符,所以该表达式值为 true 。
    C 选项x>(y + x) ,先计算 y + x ,即 4.6f + 3.5f = 8.1f ,而 x = 3.5f ,显然 3.5f < 8.1f ,所以该表达式值为 false 。
    D 选项x<y &&!(x<z) ,x<y 为 true(因为 3.5f < 4.6f ),x<z 为 true(因为 3.5f < 5.7f ),!(x<z) 为 false ,&& 是逻辑与运算符,只有当两个操作数都为 true 时结果才为 true ,所以该表达式值为 false 。
     
  16. 创建二维数组a[3][4]后,a[0].length的值应该等于()
    答案:4
    解析:a[3][4] 表示一个有 3 行 4 列的二维数组,a[0] 表示第一行,a[0].length 就是第一行的元素个数,即列数 4。
     
  17. 下列关于数组的使用,不正确的是()
    A 选项:在 Java 中,数组一旦创建,其长度就固定下来,不能再修改,例如 int[] arr = new int[5]; ,这个数组 arr 的长度就是 5,后续不能改变,该选项说法正确。
    B 选项:数组要求其中存放的数据类型一致,比如 int[] arr 只能存放 int 类型数据,String[] strArr 只能存放 String 类型数据 ,该选项说法正确。
    C 选项:数组下标范围是从 0 开始,最大到 “数组长度 - 1” 。例如长度为 5 的数组,其有效下标是 0、1、2、3、4,而不是到数组长度 5 ,该选项说法错误。
    D 选项:Java 数组既可以存放基本数据类型(如 int 、double 等),也可以存放对象类型(如自定义类的对象 ),比如 Object[] objArr = new Object[3]; 可以存放各种对象,该选项说法正确。

    答案:例如 int[] arr = new int[3]; arr[3] = 10; (数组越界,数组下标从 0 开始,长度为 3 的数组有效下标是 0、1、2)
    解析:访问数组元素时,下标不能超出数组的有效范围。
  18. this在程序中代表的是? (父类)
    答案:当前对象的引用
    解析:this 关键字在类的方法中使用,代表调用该方法的当前对象。
     
  19. 下面关于类的结构的说法正确的是? ()
    A 选项:类可以包含多个构造方法,即构造方法重载,通过不同的参数列表来实现不同的初始化逻辑,所以该选项错误。
    B 选项:类可以没有属性,在一些情况下,类可能仅用于组织方法,实现特定功能,没有定义属性也是合法的,该选项正确。
    C 选项:类不仅可以包含方法,还可以包含属性(成员变量)、构造方法等,所以该选项错误。
    D 选项:类除了包含属性,还可以有方法、构造方法等成员,并非只能包含属性,所以该选项错误。
    答案:类可以包含成员变量、构造方法和成员方法等。
    解析:类是对象的抽象描述,通常由成员变量来描述对象的属性,构造方法用于创建对象,成员方法用于实现对象的行为。
  20. 定义类头时,不可能用到的关键字是?(static)
    答案:例如 void (void 用于方法返回类型,不能用于类定义)
    解析:定义类时常用的关键字有extends 、 class 、public 、private 、protected 、abstract 、final 等。
  21. 下面类的定义中结构正确的是? ()
    A 选项class A() 错误,定义类的语法格式错误,类名后面不应有括号 ,正确格式是 class A{} 。
    B 选项class 2A 错误,类名不能以数字开头,类名应遵循标识符的命名规则,以字母、下划线或美元符号开头 。
    C 选项int class A 错误,int 是数据类型关键字,不能用于类定义的开头,语法混乱 。
    D 选项public class A 正确,public 是访问修饰符(可选),用于指定类的访问权限,class 是定义类的关键字,A 是类名,符合类定义的语法结构 。
    解析:类定义应包含类名、成员变量、构造方法和成员方法等,且语法要正确。
  22. 关于java源文件下列说法正确的是? ()
    A 选项:一个 Java 源文件中只能有一个 public 修饰的类,并且该 public 类的类名必须与源文件名相同(包括大小写) 。这是 Java 语法规定,用于规范代码结构和文件管理,该选项正确。
    B 选项:一个 Java 源文件中可以有多个缺省(默认访问修饰符,即没有使用 publicprivateprotected 修饰 )的类,所以该选项错误。
    C 选项protected 修饰符不能用于修饰顶层类(即类定义在文件最外层,不是嵌套类 ),只能用于修饰类的成员(成员变量、成员方法等),所以不存在一个 Java 源文件中有多个 protected 修饰的类这种情况,该选项错误。
    D 选项:同 C 选项,protected 不能用于修饰顶层类,所以该选项错误。
  23. 下列构造方法的调用方式中,正确的是()
    A 选项:构造方法不能像一般方法那样直接调用。一般方法有明确的方法名用于被调用执行特定功能,而构造方法是和 new 关键字配合创建对象时使用的,所以该选项错误。
    B 选项:构造方法不是由用户直接调用的。用户不能像调用普通成员方法那样去调用构造方法,它是在对象创建过程中被触发执行的,所以该选项错误。
    C 选项:在 Java 中,构造方法只能通过 new 关键字来自动调用 。例如 MyClass obj = new MyClass(); ,在执行 new 操作时,会自动调用 MyClass 类的构造方法来初始化对象,该选项正确。
    D 选项:构造方法不会自动执行,必须在使用 new 关键字创建对象时才会被调用执行,如果不创建对象,构造方法不会执行,所以该选项错误。
  24. 以下哪个接口的定义是正确的?()
    A 选项:接口中的方法默认是抽象的,不能有方法体 。
    interface B{ void print(){ };} 中 print 方法有方法体,不符合接口定义规则,所以该选项错误。
    B 选项interface 关键字本身就隐含了抽象的概念,不需要再用 abstract 修饰 。
    abstract interface B { void print();} 这种写法错误,所以该选项错误。
    C 选项:一方面,不需要用 abstract 修饰 interface ;
    另一方面,接口中方法不能有方法体 。
    abstract interface B extends A1,A2 { abstract void print(){ };} 存在这两处错误,所以该选项错误。
    D 选项interface B { void print();} 符合接口的定义规则,接口名是 B ,里面定义了一个抽象方法 print ,方法声明正确,所以该选项正确。
    解析:接口中的方法默认是 public abstract 的,不能有方法体。
  25. 下列类头定义中,错误的是 ? (A)

    A 选项:在 Java 中,定义类时如果使用 public 修饰符,必须完整写出 public class 来声明类,public x extends y 缺少 class 关键字,语法错误 。
    B 选项public class x extends y ,public 为访问修饰符,class 是声明类的关键字,Ax 是类名,extends y 表示继承 y 类,语法正确。
    C 选项class x extends y implements y1 ,class 声明类,x 是类名,extends y 表示继承 y 类,implements y1 表示实现 y1 接口,语法正确。
    D 选项class x 是最基本的类声明形式,使用 class 关键字声明了一个名为 x 的类,语法正确。
    答案:例如 public void class MyClass (void 不能用于类定义)
    解析:类定义使用 class 关键字,不能使用 void 等用于方法返回类型的关键字。
  26. 下列类定义中,不正确的是? ()

    A 选项class x 是定义类的基本形式,声明了一个名为 x 的类,语法正确。
    B 选项class x extends y 表示定义一个类 x ,它继承自类 y ,符合 Java 中类继承的语法规则。
    C 选项class x implements y1,y2 表示类 x 实现了接口 y1 和 y2 ,在 Java 中一个类可以实现多个接口,该定义正确。
    D 选项:Java 中类只支持单继承,即一个类只能有一个直接父类 。public class x extends X1,X2 试图让类 x 继承两个类 X1 和 X2 ,不符合 Java 语法规则,所以该选项不正确。
    答案:例如在类中定义方法时返回类型和方法名之间有错误的语法,如 public void method() { return 1; } (void 方法不能有返回值)
    解析:类定义中的方法要遵循正确的语法规则,包括返回类型、方法名、参数列表和方法体等。
  27. 下列叙述正确的是?(C)

    A 选项:Java 不允许多继承,即一个类不能同时直接继承多个父类。多继承可能会导致代码的复杂性和冲突等问题,所以该选项错误。
    B 选项:在 Java 中,一个类可以实现多个接口 ,通过实现多个接口来让类具备多种不同的行为规范,所以该选项错误。
    C 选项:Java 中类只支持单重继承,也就是一个类只能有一个直接父类,通过继承可以复用父类的属性和方法,该选项正确。
    D 选项:Java 不允许多继承,不管是普通类还是抽象类,一个类都只能有一个直接父类,所以一个类不能继承多个抽象类,该选项错误。
  28. 对于try和catch子句的排列方式,下面哪一项是正确的? ()

    A 选项:在 try - catch 结构中,子类异常应该在前,父类异常在后。因为如果父类异常在前,当 try 块中抛出子类异常时,会被父类异常的 catch 块捕获,导致后续子类异常特有的处理逻辑无法执行 ,所以该选项正确。
    B 选项:若父类异常在前,子类异常在后,会出现上述提到的子类异常被父类异常提前捕获的问题,所以该选项错误。
    C 选项try - catch 结构中既可以有子类异常,也可以有父类异常 ,只要按照正确的排列顺序(子类异常在前,父类异常在后 )即可,所以该选项错误。
    D 选项:父类异常和子类异常可以出现在同一个 try 程序段内,前提是正确安排 catch 块的顺序,所以该选项错误。
    答案:例如在类中定义方法时返回类型和方法名之间有错误的语法,如 public void method() { return 1; } (void 方法不能有返回值)
    解析:类定义中的方法要遵循正确的语法规则,包括返回类型、方法名、参数列表和方法体等。
  29. 关于异常的定义,下面描述正确的是?()

     
  30. 当方法产生该方法无法确定该如何处理的异常时,应该如何处理? ()
    答案:使用 throws 关键字在方法声明中抛出异常。
    解析:throws 用于在方法声明中指定该方法可能抛出的异常类型,将异常处理的责任交给调用该方法的代码。

  31. 请写出下列程序的输出结果

    interface A {

          int x = 1;

          void showX();

    }

    interface B {

          int y = 2;

          void showY();

    }

    class InterfaceTest implements A, B {

          int z = 3;

          public void showX() {

                System.out.println("x=" + x);

          }

          public void showY() {

                System.out.println("y=" + y);

          }

          public void showMe() {

                System.out.println("z=" + (z + x + y));

          }

    }

    public class Class1 {

          public static void main(String[] args) {

                InterfaceTest myObject = new InterfaceTest();

                myObject.showX();

                myObject.showY();

                myObject.showMe();

          }

    }
    这段 Java 代码定义了两个接口 A 和 B,一个实现了这两个接口的类 InterfaceTest,以及包含 main 方法的类 Class1。下面分析代码的执行过程及输出结果:
    InterfaceTest 对象创建:在 main 方法中,使用 new 关键字创建了 InterfaceTest 类的一个对象 myObject
    调用 showX 方法:调用 myObject.showX() 时,showX 方法会输出接口 A 中常量 x 的值。由于接口中的变量默认是 public static final 的,所以这里输出 x=1
    调用 showY 方法:调用 myObject.showY() 时,showY 方法会输出接口 B 中常量 y 的值,输出结果为 y=2
    调用 showMe 方法:调用 myObject.showMe() 时,showMe 方法会输出 z + x + y 的结果,其中 z 是 InterfaceTest 类的实例变量,值为 3;x 是接口 A 的常量,值为 1;y 是接口 B 的常量,值为 2。所以输出结果为 z=6

第二次

1-6

第 1 题

  • 答案:D
  • 解析private static int x=100; 虽然是私有静态变量,但在本类内部可以访问和操作。从第 5 行到第 10 行,对x进行了 4 次自增(x++ )和 1 次自减(x-- )操作 ,100 + 4 - 1 = 102 ,所以最终输出x=102 。

第 2 题

  • 答案:B
  • 解析:方法重写要求重写方法与被重写方法具有相同的返回值类型、方法名、参数列表,且重写方法不能比被重写方法声明更多的异常(或者声明更少、更具体的异常)。B 选项中方法返回值类型、参数列表与父类方法不同,且抛出了更宽泛的Exception ,不符合重写规则。

第 3 题√

  • 答案:C
  • 解析(x>4)? 99.9:9 是三元表达式,x = 4 ,条件x>4 不成立,所以取冒号后面的值9 ,又因为输出语句中println 方法会自动将结果转换为合适类型输出,在 Java 中,整数9 作为浮点数输出就是9.0 。

第 4 题

  • 答案:B
  • 解析:在change 方法中,str="test ok"; 只是改变了方法内部局部变量str 的引用指向,不会影响到主方法中str 原本指向的字符串对象,所以输出还是good ;而ch[0]='g'; 改变了字符数组ch 中第一个元素的值,所以输出gbc 。

第 5 题√

  • 答案:C
  • 解析ClassDemo 类的构造方法中每次都会执行sum = sum + 5; ,第一次实例化demo1 时,sum 初始值为1 ,执行构造方法后sum 变为6 ,第二次实例化demo2 时,sum 基于上次结果6 ,再执行构造方法变为6 + 5 = 11 ,所以demo1.sum 输出为11 。

第 6 题

  • 答案:A
  • 解析:抽象类中可以有抽象方法和非抽象方法,抽象方法只有声明没有实现。
    A 选项public abstract void method(int a); 是合法的抽象方法声明;
    B 选项value = value + 5; 中value 未定义,会报错;
    C 选项public int method(); 定义方法没有方法体,在非抽象类中不合法(抽象类中抽象方法需用abstract 修饰);
    D 选项抽象方法不能有方法体。

7-16

第 7 题

  • 答案:C
  • 解析:在 Java 中,创建子类对象时,会先调用父类的无参构造方法(如果没有显示调用父类其他构造方法),再调用子类构造方法。执行new Child("mike") 时,先调用People 类的无参构造方法People() 输出1 ,再调用People(String name) 输出2 ,最后调用Child(String name) 输出3 ,所以顺序是123 。

第 8 题√

  • 答案:D
  • 解析:接口只能被public 修饰,
    private 、protected 、private protected 都不能用于修饰接口。
    接口默认是public abstract ,使用public 修饰可以明确其对外可见性。

第 9 题√

  • 答案:D
  • 解析:子类对象可以赋值给父类引用,这是多态的体现。因为B 是A 的子类,C 是B 的子类,所以A a0=new A(); 、A a1=new B(); 、A a2=new C(); 这三行代码在编译和运行时都不会出错,它们都符合继承体系下的引用赋值规则。

第 10 题

  • 答案:C
  • 解析method1() 是非静态方法,需要通过对象来调用,不能通过类名A 直接调用,会报错;a 是A 类的实例对象,可以通过a 调用非静态方法method1() ,也可以调用静态方法method2() ;
    类名A 可以直接调用静态方法method2() 。

第 11 题

  • 答案:A
  • 解析num 是实例变量,每个对象有独立副本。foo1 、foo2 、foo3 各自的num 初始为0 ,经自增后foo3.num 为3 。x 是静态变量,所有对象共享,static 代码块执行一次使x 为1 ,后续多次自增,最终foo3.x 为3 ,所以输出3,3 。

第 12 题

  • 答案:D
  • 解析:接口中EASY 是final 修饰的静态常量,值为3 。doStuff 方法中++s 先自增后使用,s 初始值为0 ,自增3 次后为3 ,但EASY 是final 不能被修改,再次执行++s 会导致编译错误,因为对常量重新赋值。

第 13 题

  • 答案:C
  • 解析SubCalc 类中重写multiply 方法时,int c = super.multiply(a, b); 调用父类方法,父类multiply 方法返回值类型是int ,这里调用语法正确。但SubCalc 类中multiply 方法返回值类型声明为int ,而方法体中没有显式return 语句返回计算结果,编译会报错 。

第 14 题√

  • 答案:A
  • 解析:在 Java 源文件中,正确顺序是package 声明(指定包名,可选),然后是import 语句(导入其他包的类,可选),最后是class 定义(定义类) 。

第 15 题√

  • 答案:B
  • 解析public static void main 方法的标准参数形式是String[] args ,也可以写成String args[] ,它用于接收命令行传入的参数。

第 16 题

  • 答案:B
  • 解析:方法重写要求方法名、参数列表、返回值类型相同,且重写方法不能比被重写方法声明更宽泛的异常。A 选项抛出异常比父类方法更宽泛;C 选项参数类型不同;D 选项方法修饰符错误,重写方法不能比父类方法更严格(父类是public ,重写方法不能是private ) 。

17-24

第 17 题

  • 答案:BDE
  • 解析:外层循环i 从0 到2 ,内层循环j 从3 到0 递减。当i = 0 ,j = 3 时,j-- 后j = 2 ,continue 跳过本次内层循环输出,此时i = 0 ,j = 2 ;内层循环继续,j-- 后j = 1 ,再次continue ;内层循环继续,j-- 后j = 0 ,输出i=0 j=0 。外层循环i++ 变为1 ,内层循环重新开始,j 从3 开始,j-- 后j = 2 ,输出i=1 j=2 ;内层循环继续,j-- 后j = 1 ,continue ;内层循环继续,j-- 后j = 0 ,continue 。外层循环i++ 变为2 ,内层循环重新开始,j 从3 开始,j-- 后j = 2 ,continue ;内层循环继续,j-- 后j = 1 ,continue ;内层循环继续,j-- 后j = 0 ,continue 。

第 18 题

  • 答案:B
  • 解析Base b = new Base(); 创建Base 类对象没问题,但Sub s=(Sub)b; 试图将父类对象强制转换为子类对象,而这个父类对象实际不是子类实例,不符合继承关系的类型转换规则,编译时就会报错 。

第 19 题

  • 答案:D
  • 解析abstract 和final 不能同时修饰类,abstract 类需被继承扩展,final 类不能被继承;abstract 类不能是private ,private 修饰的类不能被其他类访问和继承;protected 和private 不能同时修饰成员;public abstract class Car{} 是合法的抽象类声明 。

第 20 题

  • 答案:C
  • 解析:构造方法与类名必须相同,没有返回值且不用void 声明,只能通过new 关键字自动调用。构造方法可以有输入参数,用于初始化对象成员变量,所以 C 选项说法错误。

第 21 题

  • 答案:3
  • 解析:先执行m1(2,3) ,根据m1 方法逻辑,2<=3 ,返回3 ;再执行fun(3,1) ,fun 方法返回两参数之和,即3 + 1 = 4 。

第 22 题

  • 答案:Sub.
  • 解析Base b = new Sub(); 是多态的体现,创建的是Sub 类对象,调用b.fun() 时,根据动态绑定机制,会调用子类Sub 重写后的fun 方法,所以输出Sub. 。

第 23 题

  • 答案
    • 经过路程:299.609375 米
    • 第 10 次反弹高度:0.09765625 米
  • 解析
    • 经过路程:第一次落地经过 100 米;从第一次反弹到第二次落地,经过的路程是100×21​×2 米;从第二次反弹到第三次落地,经过的路程是100×(21​)2×2 米;以此类推,到第 10 次落地,经过的总路程S=100+2×100×(21​)+2×100×(21​)2+⋯+2×100×(21​)9 。这是一个首项a1​=100 ,公比q=21​ 的等比数列求和问题(除了第一项 100 ),根据等比数列求和公式Sn​=1−qa1​(1−qn)​ ,这里n=9 ,先求出后面等比数列和为2×100×1−21​21​(1−(21​)9)​=200×(1−(21​)9) ,再加上第一项 100,即S=100+200×(1−(21​)9)=100+200×(1−5121​)=100+200×512511​≈299.609375 米。
    • 第 10 次反弹高度:根据规律,第n 次反弹高度h=100×(21​)n ,当n=10 时,h=100×(21​)10=1024100​=0.09765625 米。

第 24 题

  • 答案
import java.util.ArrayList;
import java.util.List;public class RemainingPerson {public static void main(String[] args) {int total = 500;List<Integer> people = new ArrayList<>();for (int i = 1; i <= total; i++) {people.add(i);}int index = 0;while (people.size() > 1) {for (int i = 0; i < 2; i++) {index++;if (index == people.size()) {index = 0;}}people.remove(index);if (index == people.size()) {index = 0;}}System.out.println("最后剩下的人是:" + people.get(0));}
}

解析:使用ArrayList 存储人员编号,通过循环模拟报数过程。外层while 循环保证列表中人数大于 1 。内层for 循环两次,每次移动到下一个人(处理循环末尾回到开头情况),然后移除报数为 3 的人,最后输出列表中剩下的唯一编号,即最后剩下的人。


http://www.mrgr.cn/news/97351.html

相关文章:

  • 新一代AI架构实践:数字大脑AI+智能调度MCP+领域执行APP的黄金金字塔体系
  • java发送http请求
  • k8s 1.23升级1.24
  • k8s之Ingress讲解
  • TDengine 从入门到精通(2万字长文)
  • 线程池/内存池/mysql连接池
  • 15分钟完成Odoo18.0安装与基本配置
  • Nginx 常见面试题
  • 现代Web表单验证的终极解决方案:构建可扩展的企业级验证系统
  • sentinel新手入门安装和限流,热点的使用
  • 003集——《利用 C# 与 AutoCAD API 开发 WPF 随机圆生成插件》(侧栏菜单+WPF窗体和控件+MVVM)
  • Gerapy二次开发:用户管理专栏页面样式与功能设计
  • 2024 天梯赛——工业园区建设题解
  • C++ 内存访问模式优化:从架构到实践
  • 协同控制与分布式控制 —— 理论、案例与交互式 GUI 实现
  • 进程内存分布--之理论知识
  • 从零实现本地大模型RAG部署
  • 小刚说C语言刷题——第16讲 switch语句
  • 【Linux学习笔记】初识进程概念和进程PCB
  • 构建企业级表单验证系统:可配置化验证器设计与实现