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 + \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.
3. public class Cashier {
4. public static void main(String[] args) {
5. // 输入数据
6. Scanner console = new Scanner(System.in); 7. System.out.println(\请输入单价(¥):\); 8. double unitPrice = console.nextDouble(); 9. System.out.println(\请输入数量:\); 10. double amount = console.nextDouble(); 11. System.out.println(\请输入金额(¥):\); 12. double money = console.nextDouble(); 13. console.close();
14. } 15. }
在此需要注意导入Scanner类所在的包。 步骤三:计算所购商品总价及找零
首先,计算商品的总价;然后,将收款金额减去应收金额,即为找零;最后,输出应收金额和找零金额,代码如下所示:
1. import java.util.Scanner; 2.
3. public class Cashier {
4. public static void main(String[] args) { 5. // 输入数据
6. Scanner console = new Scanner(System.in); 7. System.out.println(\请输入单价(¥):\); 8. double unitPrice = console.nextDouble(); 9. System.out.println(\请输入数量:\); 10. double amount = console.nextDouble(); 11. System.out.println(\请输入金额(¥):\); 12. double money = console.nextDouble(); 13. console.close(); 14.
15. // 计算商品总价
16. double totalPrice = 0.0;
17. totalPrice = unitPrice * amount; 18. // 计算找零
19. double change = money - totalPrice;
20. System.out.println(\应收金额为:¥\ + totalPrice + \,
找零为:¥\ + change);
21. } 22. }
本案例的完整代码如下所示:
代码