• java基础


    1 指出下面程序中的编译错误,并更正

     
    1. int lenght=10;
    2. System.out.println(length);

    参考答案

    上述代码中,第二行会出现编译错误。length变量没有声明,就被使用了,因此,会出现编译错误。咋一看代码会感觉length变量被初始化了,但仔细查看会发现第一句声明的变量为lenght,th两个字母写反了,导致了length变量没有被声明。因此,有时出现的变量没有被声明的问题,引起的原因可能是变量名拼写错误。更正后的代码如下所示:

     
    1. int length=10;
    2. System.out.println(length);

    2 指出下面程序中的编译错误,并更正

     
    1. int &size=20;
    2. System.out.println(&size);

    参考答案

    上述代码中,定义的变量&size不符合Java变量的命名规范,Java变量只能包含数字、字母、下划线和$,而&不能在变量命名中使用,因此会出现编译错误。更正后的代码如下所示:

     
    1. int size=20;
    2. System.out.println(size);

    3 指出下面程序中的编译错误,并更正

     
    1. int age;
    2. System.out.println(age);

    参考答案

    上述代码会出现编译错误,因为,变量age未进行初始化,就在第二行中被使用了。在Java中,变量在使用之前,必须进行初始化。更正的代码如下所示:

    1. int age=2;
    2. System.out.println(age);

    4 运行下面程序,指出变量的输出结果

    1. int count=30;
    2. count=60;
    3. System.out.println(count);

    参考答案

    输出结果为60。

    上述代码中,首先声明并初始化int类型变量count为30;然后,将变量count的值改变为60;最后,输出count的值。输出的count值为改变以后的值,即为60。

    5 指出下面程序中的编译错误,并更正

    1. int balance;
    2. balance =218.50;

    参考答案

    上述代码中,变量balance声明时的类型为int,后续赋值为218.50,而218.50是浮点类型,因此导致编译错误。整数类型变量不可以赋予浮点类型的值。更正后的代码如下所示:

    1. double balance;
    2. balance =218.50;

    6 指出下面程序的编译或运行结果,并解释原因

    1. int i=128;
    2. i = 10000000008;
    3. System.out.println(i);

    参考答案

    上述代码的第二行处,会出现编译错误。

    原因是10000000008是个整数直接量,整数的直接量的类型默认为int类型,而直接写出的整数10000000008超过了int的表达范围,所以会出现编译错误。

    7 通过代码计算一段程序运行的时间

    参考答案

    以下代码的功能为计算1累加到1000000的所耗的时间,代码如下所示:

    1.     public static void main(String[] args) {
    2.         //开始时间
    3.         long startTime = System.currentTimeMillis();
    4.         //计算从1加到1000000的和
    5.         int sum = 0;
    6.         for (int i = 1; i <= 1000000; i++) {
    7. sum+=i;
    8.         }
    9.         //结束时间
    10.         long endTime = System.currentTimeMillis();
    11.         //输出耗时
    12.         System.out.println("耗时:"+(endTime-startTime)+"毫秒");
    13.     }

    上述代码中,使用了JDK提供的 System.currentTimeMillis() 方法,该方法返回1970年1月1日零点到此时此刻所经历的毫秒数,其数据类型为long,经常用于计时操作。

    另外,计算从1加到1000000的和的代码,了解即可,后续课程中会讲解到for循环的。

    8 指出下面程序的运行输出结果

    1.     double width = 6.0;
    2.     double length = 4.9;
    3.     System.out.println(width - length);

    参考答案

    上述代码的输出结果为:1.0999999999999996。

    上述代码的运行结果存在舍入误差问题。由于计算机内部采用2进制,人使用10进制,不是每一个2进制的小数都可以用10进制为表示的。2进制系统中无法精确的表示1/10,就好像十进制系统中无法精确的表示1/3一样。所以,2进制表示10进制会有一些舍入误差,对于一些要求精确运算的场合会导致代码的缺陷。

    9 指出下面程序的输出结果

    1. char ascii=98;
    2. System.out.println(ascii);

    参考答案

    上述代码的输出结果为:b

    原因是如果把0~65535范围内的一个int整数直接量赋给char类型变量,系统会自动把这个int类型整数当成char类型来处理。本题中,说明系统自动把整数类型98当成char类型来处理,处理的结果为b。98是b的unicode码。

    10 指出下面程序中的编译错误,并更正

    1. byte b1=10;
    2. byte b2=20;
    3. byte b3=b1+b2;

    参考答案

    上述代码在第三行会出现编译错误,原因是b1+b2的结果为int类型。更正后的代码如下:

    1. byte b1=28;
    2. byte b2=20;
    3. int b3=b1+b2;

    或者,使用强制类型转换,将int类型结果转换为byte类型,代码如下所示:

    1. byte b1=10;
    2. byte b2=20;
    3. byte b3=(byte)(b1+b2);

    11 指出下面程序的运行输出结果

    1.     int a = 1, b = 10;
    2.     int c1 = a++;
    3.     int c2 = ++b;
    4.     System.out.println("a=" + a + ", b=" + b + ", c1=" + c1 + ", c2=" + c2);

    参考答案

    输出结果为:

    1. a=2, b=11, c1=1, c2=11

    上述代码中,“int c1 = a++;”表示先将a的值1作为表达式a++的值,然后a再自加,故a的值为2,最后,将a++表达式的值1赋值给c1,c1的值为1;

    “int c2 = ++b”表示先将b的值自加,然后将b的值作为++b表达式的值赋给c2,故b的值为11,c2的值也为11。

    12 指出下面程序的运行输出结果

    1. int i = 100, j = 200;
    2. boolean b1 = (i > j) && (i++ > 100);
    3. System.out.println(b1);
    4. System.out.println(i);

    参考答案

    上述代码的输出结果为:

    1. false
    2. 100

    原因是对于“&&”,当第一个操作数为false时,将不会判断第二个操作数,因为此时无论第二个操作数是什么最后的结果一定是false。本题中(i>j)的结果为false,因此不会去计算(i++>100),所以变量b1的结果为false,i不会在自身的基础上加1,值为100。

    13 完成收银柜台收款程序V1.0

    编写一个收银柜台收款程序。根据商品单价、购买数量以及收款金额计算并输出应收金额和找零,控制台交互情况如图-1所示。

    图- 1

    参考答案

    本案例的实现方案如图-2所示。

    图- 2

    实现此案例需要按照如下步骤进行。

    步骤一:定义类及 main方法

    首先定义一个名为 Cashier的类,并在类中添加Java应用程序的主方法main,代码如下所示:

    1. public class Cashier {
    2.     public static void main(String[] args) {
    3.         
    4.     }
    5. }

    步骤二:读取控制台输入

    在main方法中,实例化Scanner类,并调用Scanner类的nextDouble() 方法接收用户从控制台输入的商品单价、购买数量、收款金额,使用完毕后将scanner对象关闭,以释放资源。代码如下所示:

    1. import java.util.Scanner;
    2. public class Cashier {
    3.     public static void main(String[] args) {
    4.         // 输入数据
    5.         Scanner console = new Scanner(System.in);
    6.         System.out.println("请输入单价(¥):");
    7.         double unitPrice = console.nextDouble();
    8.         System.out.println("请输入数量:");
    9.         double amount = console.nextDouble();
    10.         System.out.println("请输入金额(¥):");
    11.         double money = console.nextDouble();
    12.         console.close();
    13.     }
    14. }

    在此需要注意导入Scanner类所在的包。

    步骤三:计算所购商品总价及找零

    首先,计算商品的总价;然后,将收款金额减去应收金额,即为找零;最后,输出应收金额和找零金额,代码如下所示:

    1. import java.util.Scanner;
    2. public class Cashier {
    3.     public static void main(String[] args) {
    4.         // 输入数据
    5.         Scanner console = new Scanner(System.in);
    6.         System.out.println("请输入单价(¥):");
    7.         double unitPrice = console.nextDouble();
    8.         System.out.println("请输入数量:");
    9.         double amount = console.nextDouble();
    10.         System.out.println("请输入金额(¥):");
    11.         double money = console.nextDouble();
    12.         console.close();
    13.         // 计算商品总价
    14.         double totalPrice = 0.0;
    15.         totalPrice = unitPrice * amount;
    16.         // 计算找零
    17.         double change = money - totalPrice;
    18.         System.out.println("应收金额为:¥" + totalPrice + ",找零为:¥" + change);
    19.     }
    20. }

    本案例的完整代码如下所示:

    1. import java.util.Scanner;
    2. public class Cashier {
    3.     public static void main(String[] args) {
    4.         // 输入数据
    5.         Scanner console = new Scanner(System.in);
    6.         System.out.println("请输入单价(¥):");
    7.         double unitPrice = console.nextDouble();
    8.         System.out.println("请输入数量:");
    9.         double amount = console.nextDouble();
    10.         System.out.println("请输入金额(¥):");
    11.         double money = console.nextDouble();
    12.         console.close();
    13.         // 计算商品总价
    14.         double totalPrice = 0.0;
    15.         totalPrice = unitPrice * amount;
    16.         // 计算找零
    17.         double change = money - totalPrice;
    18.         System.out.println("应收金额为:¥" + totalPrice + ",找零为:¥" + change);
    19.     }
    20. }
  • 相关阅读:
    重构与反思-<重构代码的7个阶段>有感
    Unity 自定义"=="操作符 [翻译来源blogs.unity3d,2014/05]
    Unity UGUI Button 无法点击问题一例
    [Lua性能] 小试验一例
    C# 循环中 直接索引 VS 缓存索引 性能测试
    Lua table直接索引VS缓存索引性能测试小示例
    大型网站架构系列:负载均衡详解(1)
    大型网站架构系列:电商网站架构案例(3)
    大型网站架构系列:电商网站架构案例(2)
    大型分布式网站架构技术总结
  • 原文地址:https://www.cnblogs.com/xyk1987/p/8329296.html
Copyright © 2020-2023  润新知