文章目录

  • 一、选择题
  • 二、编程题


一、选择题

1、在Java中,以下数据类型中,需要内存最多的是(B )
A: byte
B: long
C: Object
D: int
答案解析:B
byte 1字节; short 2字节;long 8字节;int 4字节;object 4字节
2、以下选项中,switch语句判断条件可以接受的数据类型有哪些 【多选】(A,B,C,D )
A: int
B: byte
C: char
D: short
答案解析:A B C D
switch 语句中的变量类型可以是: byte、short、int 或者 char。从 Java SE 7 开始,switch 支持字符串String 类型了,同时 case 标签必须为字符串常量或字面量
3、有如下代码:请写出程序的输出结果。(B )

public class Test
{
    public static void main(String[] args) {
        int x = 0;
        for (int z = 0; z < 5; z++) {
            if (z>=2)
           {
                x++;
           }
       }
        System.out.println(x);
   }
}

A: 4
B: 3
C: 1
D: 2
答案解析:B
当z=2时,也就是第三次for循环的时候,x开始加1,故x=3;
4、下面结果输出是?(C )

public class IfTest{
    public static void main(String[]args){
        int x=3;
        int y=1;
        if(x=y)
            System.out.println("Not equal");
        else
            System.out.println("Equal");
     }
}

A: The output is “Equal”
B: The output in “Not Equal”
C: An error at line 5 causes compilation to fall.
D: The program executes but does not print a message.
答案解析:C
第五行 "if(x=y)"括号中的表达式应该为判断,即结果为true或者false,不能为赋值表达式
5、下列循环语句序列执行完成后,i的值是(C )

int i;
for(i=2;i<=10;i++){
 System.out.println(i);
}

A: 2
B: 10
C: 11
D: 不确定A
答案解析:C
i=11的时候退出循环,所以i最终的取值为11

二、编程题

1、快乐数
编写一个算法来判断一个数 n 是不是快乐数。
「快乐数」定义为:
对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和。然后重复这个过程直到这个数变为 1,也可能
是 无限循环 但始终变不到 1。如果 可以变为 1,那么这个数就是快乐数。如果 n 是快乐数就返回 true ;不是,则返
回 false 。OJ链接【力扣-202号问题】

示例1:
输入:n = 19
输出:true
解释:
12 + 92 = 82
82 + 22 = 68
62 + 82 = 100
12 + 02 + 02 = 1
示例2:
输入:n = 2
输出:false

【解题思路】:
通过反复调用 getNext(n) 得到的链是一个隐式的链表。隐式意味着我们没有实际的链表节点和指针,但数据仍然形成链表结构。起始数字是链表的头 “节点”,链中的所有其他数字都是节点。next 指针是通过调用 getNext(n) 函数获得。
意识到我们实际有个链表,那么这个问题就可以转换为检测一个链表是否有环。因此我们在这里可以使用弗洛伊德循环查找算法。这个算法是两个奔跑选手,一个跑的快,一个跑得慢。在龟兔赛跑的寓言中,跑的慢的称为 “乌龟”,跑得快的称为 “兔子”。
不管乌龟和兔子在循环中从哪里开始,它们最终都会相遇。这是因为兔子每走一步就向乌龟靠近一个节点(在它们的移动方向上)。

class Solution {  
        public int getNext(int n) {
            int totalSum = 0;
             while (n >= 1) {
                  int d = n % 10;
                   n = n / 10;
                   totalSum += d * d;
                }
            return totalSum;
        }
        public boolean isHappy(int n) {
              int slowRunner = n;
              int fastRunner = getNext(n);
            while (fastRunner != 1 && slowRunner != fastRunner) {
                   slowRunner = getNext(slowRunner);
                    fastRunner = getNext(getNext(fastRunner));
                }
            return fastRunner == 1;
        }
}

2、丑数
给你一个整数 n ,请你判断 n 是否为 丑数 。如果是,返回 true ;否则,返回 false 。丑数 就是只包含质因数 2、3
和/或 5 的正整数。OJ链接【力扣-263号问题】

示例1:
输入:n = 6
输出:true
解释:6 = 2 × 3
示例2:
输入:n = 8
输出:true
解释:8 = 2 × 2 × 2
示例3:
输入:n = 14
输出:false
解释:14 不是丑数,因为它包含了另外一个质因数 7 。

【解题思路】:
根据丑数的定义,0和负整数一定不是丑数。可以对 n 反复除以 2,3,5,直到 n 不再包含质因数 2,3,5。若剩下的数等于 1,则说明 n 不包含其他质因数,是丑数;否则,说明 n 包含其他质因数,不是丑数。

class Solution {
    public boolean isUgly(int n) {
      if(n<=0){
          return false;
      }
      int[] facters={2,3,5};
      for(int facter:facters){
          while(n%facter==0){
              n=n/facter;
          }
      }
      return n==1;
    }
}