【Java每日一练】day17_ 5月7日_错题总结

以下哪项是类实例化的语句?
A varName ClassName=new varName();
B ClassName varName=new ClassName(new ClassName);
C ClassName varName=ClassName();
D ClassName varName=new ClassName();
他的回答: D (正确)
正确答案: D
 
类名 变量名= new 类名(); 由此可知B、C错误
ClassnName是类名,varName是变量名,类名在变量名之前,故选择D。
以下叙述正确的是
A 实例方法可直接调用超类的实例方法
B 实例方法可直接调用超类的类方法、
C 实例方法可直接调用子类的实例方法
D 实例方法可直接调用本类的实例方法
他的回答: D (正确)
正确答案: D

Java 语言用以下哪个类来把基本类型数据封装为对象()
A 包装
B Class
C Math
D Object
他的回答: D (错误)
正确答案: A

变量a是一个64位有符号的整数,初始值用16进制表示为:0Xf000000000000000; 变量b是一个64位有符号的整数,初始值用16进制表示为:
0x7FFFFFFFFFFFFFFF。 则a-b的结果用10进制表示为多少?()
A 1
B -(2^62+2^61+2^60+1)
C 2^62+2^61+2^60+1
D 2^59+(2^55+2^54+…+2^2+2^1+2^0)
他的回答: C (正确)
正确答案: C
 
参考答案:
计算机中进行符号数运算时,会用补码表示,符号位和数字位一起参与运算。a-b实际转换为[a-b]补=[a]补+[-b]补
转换了下[a]补=100100000000000000000000000000000000000000000000000000000000000000
[-b]补=100000000000000000000000000000000000000000000000000000000000000001
[a-b]补=1000100000000000000000000000000000000000000000000000000000000000001(65位,符号位溢出)
然后将溢出的符号位补上为100100000000000000000000000000000000000000000000000000000000000001
转换为原码1111000000000000000000000000000000000000000000000000000000000001

HashSet子类依靠()方法区分重复元素。
A toString(),equals()
B clone(),equals()
C hashCode(),equals()
D getClass(),clone()
他的回答: C (正确)
正确答案: C

HashSet子类依靠()方法区分重复元素。
A toString(),equals()
B clone(),equals()
C hashCode(),equals()
D getClass(),clone()
他的回答: C (正确)
正确答案: C

HashSet内部使用Map保存数据,即将HashSet的数据作为Map的key值保存,这也是HashSet中元素不能重复的原因。而Map中保存key值前,会去判断当前Map中是否含有该key对象,内部是先通过key的hashCode,确定有相同的hashCode之后,再通过equals方法判断是否相同。
【iNOC产品部-杨辉三角的变形】
                1
             1 1 1
          1 2 3 2 1
       1 3 6 7 6 3 1
1 4 10 16 19 16 10 4 1
以上三角形的数阵,第一行只有一个数1,以下每行的每个数,是恰好是它上面的数,左上角数到右上角的数,3个数之和(如果不存在某个数,认为该数就是0)。
求第n行第一个偶数出现的位置。如果没有偶数,则输出-1。例如输入3,则输出2,输入4则输出3。
输入n(n <= 1000000000)

 

import java.util.Scanner;

/**
 * Created by JiaLe on 2021/5/6 19:31
 */
public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        while (scanner.hasNext()) {
            int n = scanner.nextInt();
            int res = helper(n);
            System.out.println(res);
        }
        scanner.close();
    }
    public static int helper(int n) {
        int ans = 0;
        if(n <= 2)
        {
            ans = -1;
        } else {
            if(n % 4 == 0) ans = 3;
            if(n % 4 == 1) ans = 2;
            if(n % 4 == 2) ans = 4;
            if(n % 4 == 3) ans = 2;
        }
        return ans;
    }
}

 


【超长正整数相加】 请设计一个算法完成两个超长正整数的加法。
接口说明
/*
请设计一个算法完成两个超长正整数的加法。
输入参数:
String addend:加数
String augend:被加数
返回值:加法结果
*/
public String AddLongInteger(String addend, String augend)
{
/*在这里实现功能*/
return null;
}

import javax.swing.plaf.IconUIResource;
import java.util.Scanner;

/**
 * Created by JiaLe on 2021/5/6 20:03
 */
public class Main1 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        while(scanner.hasNext()) {
            String addend = scanner.nextLine();
            String augend = scanner.nextLine();
            System.out.println(AddLongInteger(addend,augend));
        }
    }
    public static String AddLongInteger(String addend, String augend) {
        char[] a1 = addend.toCharArray();
        char[] a2 = augend.toCharArray();
        int len = Math.max(addend.length(),augend.length()) + 1;
        char[] b1 = new char[a1.length];
        char[] b2 = new char[a2.length];
        for (int i = 0; i < a1.length; i++) {
            b1[i]= a1[a1.length - 1 - i];
        }
        for (int i = 0; i < a2.length; i++) {
            b2[i] = a2[a2.length - 1 - i];
        }
        char[] c1 = new char[len];
        for (int i = 0; i < c1.length; i++) {
            c1[i] = '0';
        }
        for (int i = 0; i < len - 1; i++) {
            int count=0;
            if(b1.length-1-i>=0 && b2.length-1-i>=0){
                count=b1[i]-'0'+b2[i]-'0';
            }
            else if(b1.length-1-i>=0 && b2.length-1-i<0){
                count=b1[i]-'0';
            }
            else if(b1.length-1-i<0 && b2.length-1-i>=0){
                count=b2[i]-'0';
            }
            int value=c1[i]-'0'+count;
            c1[i]=(char)(value%10+'0');
            c1[i+1]+=value/10;
        }
        while (c1[len - 1] == '0') {
            len--;
        }
        char[] c2=new char[len];
        for(int i = 0; i < len; i++){
            c2[len - 1 - i] = c1[i];
        }
        String str = new String(c2);
        return str;
    }
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_RailGun_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值