《Java编程思想》第三章习题答案

ops/2024/11/14 19:16:03/

练习1:(1)使用“简短的”和正常的打印语句来编写一个程序。

答案:这里使用“简短的”打印语句需要导thinking in Java作者个人写的包。笔者没有找到资源,就忽略这一步。

package thinkinginjava.chapterthree;public class ChapterThreeExerciseOne {public static void main(String[] args) {System.out.println("This is a normal statement:");System.out.println("Hello World");System.out.print("This is a short statement: ");System.out.print("Hello again! ");System.out.print("Still On the same line.");System.out.print("\nUse in short sentence\nManual line。wrap\n");}}

练习2: (1) 创建一个包含float域的类,并用这个类来展示别名机制。

package thinkinginjava.chapterthree;class FloatAlias{float value;
}
public class ChapterThreeExerciseTwo {public static void main(String[] args) {FloatAlias objOne = new FloatAlias();FloatAlias objTwo = new FloatAlias();objOne = objTwo;objOne.value = 3.14f;System.out.println("1: objOne.value:" + objOne.value+" objTwo.value:" + objTwo.value);objTwo.value = 1.618f;System.out.println("After modifying objTwo.value:");System.out.println("2: objOne.value:" + objOne.value+" objTwo.value:" + objTwo.value);}}

练习3: (1) 创建一个包含一个float域的类,并用这个类来展示方法调用时的别名机制。

package thinkinginjava.chapterthree;class FloatHoler{float value;
}
public class ChapterThreeExerciseThree {static void modifyValue(FloatHoler floatHoler){floatHoler.value = 9.81f;}public static void main(String[] args) {FloatHoler floatHoler = new FloatHoler();floatHoler.value = 3.14f;System.out.println("Before modify, floatHoler.value="+floatHoler.value);modifyValue(floatHoler);System.out.println("After modify, floatHoler.value="+floatHoler.value);}}

练习4: (2) 编写一个计算速度的程序,它所使用的距离和时间都是常量。

package thinkinginjava.chapterthree;import java.util.Random;public class ChapterThreeExerciseFour {public static void main(String[] args) {Random rand = new Random(47);double distance = rand.nextDouble() + 1;double time = rand.nextInt(10) + 1;double velocity = distance / time;System.out.println("distance = " + String.format("%.2f", distance));System.out.println("time = " + String.format("%.2f", time));System.out.println("velocity = " + String.format("%.2f", velocity));}}

练习5: (2) 创建一个名为Dog的类,它包含两个String域:name和says。在main()方法中,创建两个Dog对象,一个名为spot(它的叫声为"Ruff!"),另一个名为scruffy(它的叫声为“Wurf!")。然后显示它们的名字和叫声。

答案:

package thinkinginjava.chapterthree;class Dog{String name;String says;public String getName() {return name;}public void setName(String name) {this.name = name;}public String getSays() {return says;}public void setSays(String says) {this.says = says;}
}
public class ChapterThreeExerciseFive {public static void main(String[] args) {Dog dogOne = new Dog();dogOne.setName("spot");dogOne.setSays("Ruff!");Dog dogTwo = new Dog();dogTwo.setName("scruffy");dogTwo.setSays("Wurf!");System.out.println(dogOne.getName() + " " + dogOne.getSays());System.out.println(dogTwo.getName() + " " + dogTwo.getSays());}
}

练习6:(3)在练习5的基础上,创建一个新的Dog索引,并对其赋值为spot对象。测试用==和equals()方法来比较所有引用的结果。

答案:

package thinkinginjava.chapterthree;public class ChapterThreeExerciseSix {public static void main(String[] args) {Dog dogOne = new Dog();dogOne.setName("spot");dogOne.setSays("Ruff!");Dog dogTwo = new Dog();dogTwo.setName("scruffy");dogTwo.setSays("Wurf!");Dog dogThree = dogOne;System.out.println("=========="+dogOne.getName()+" compare with "+dogTwo.getName()+" ===========");compare(dogOne, dogTwo);System.out.println("=========="+dogOne.getName()+" compare with "+dogThree.getName()+" ===========");compare(dogOne, dogThree);System.out.println("=========="+dogTwo.getName()+" compare with "+dogThree.getName()+" ===========");compare(dogTwo, dogThree);}public static void compare(Dog dogOne, Dog dogTwo) {System.out.println("with==:"+(dogOne == dogTwo));System.out.println("with equals():"+(dogOne.equals(dogTwo)));System.out.println("==on name:"+(dogOne.getName()==dogTwo.getName()));System.out.println("==on says:"+(dogOne.getSays()==dogTwo.getSays()));System.out.println("equals() on name:"+(dogOne.getName().equals(dogTwo.getName())));System.out.println("equals() on says:"+(dogOne.getSays()==dogTwo.getSays()));}}

练习7:(3)编写一个程序,模拟扔硬币的结果。

答案:

package thinkinginjava.chapterthree;import java.util.Random;public class ChapterThreeExerciseSeven {public static void main(String[] args) {for (int i = 0; i < 10000; i++) {Random rand = new Random();String result = rand.nextBoolean()? "HEAD" : "TAIL";System.out.println(result);}}}

练习8: (2)展示用十六进制和八进制计数法来操作long值,用Long.toBinaryString()来显示结果。

答案:

package thinkinginjava.chapterthree;public class ChapterThreeExerciseEight {public static void main(String[] args) {long hexValue = 0x1A3F; //decimal 6719long octalValue = 0757; //decimal 495System.out.println("Hexdecimal value: 0x"+Long.toHexString(hexValue));System.out.println("Binary representation :"+Long.toBinaryString(hexValue));System.out.println("Octaldecimal value: 0"+Long.toOctalString(octalValue));System.out.println("Binary representation :"+Long.toBinaryString(octalValue));}}

练习9:(1) 分别显示用float和double指数计数法所能表示的最大和最小的数字。

答案:

package thinkinginjava.chapterthree;public class ChapterThreeExerciseNine {public static void main(String[] args) {System.out.println("Float Maximum Value: "+Float.MAX_VALUE);System.out.println("Float Minimum Value: "+Float.MIN_VALUE);System.out.println("Double Maximum Value: "+Double.MAX_VALUE);System.out.println("Double Minimum Value: "+Double.MIN_VALUE);System.out.println("\nFloat Maximum Value in secientific nontion:" + String.format("%e", Float.MAX_VALUE));System.out.println("Float Minimum Value in secientific nontion:" + String.format("%e", Float.MIN_VALUE));System.out.println("Double Maximum Value in secientific nontion:" + String.format("%e", Double.MAX_VALUE));System.out.println("Double Minimum Value in secientific nontion:" + String.format("%e", Double.MIN_VALUE));}}

练习10:(3) 编写一个具有两个常量值的程序,一个具有交替的二进制位1和0,其中最低有效位为0,另一个也具有交替的二进制位1和0,但是其最低有效位为1(提示:使用十六进制常量来表示是最简单的方法)。取这两个值,按位操作符以所有可能的方式结合运算它们,然后用Integer.toBinaryString()显示。

答案:

package thinkinginjava.chapterthree;public class ChapterThreeExerciseTen {public static void main(String[] args) {int valueOne = 0x55555555;  // binary 01010101010101010101010101010101int valueTwo = 0xAAAAAAAA;  // binary 10101010101010101010101010101010System.out.println("valueOne in binary: " + Integer.toBinaryString(valueOne));System.out.println("valueTwo in binary: " + Integer.toBinaryString(valueTwo));int andResult = valueOne & valueTwo;System.out.println("andResult in binary: " + Integer.toBinaryString(andResult));int orResult = valueOne | valueTwo;System.out.println("orResult in binary: " + Integer.toBinaryString(orResult));int xorResult = valueOne ^ valueTwo;System.out.println("xorResult in binary: " + Integer.toBinaryString(xorResult));int notResultOne = ~valueOne;int notResultTwo = ~valueTwo;System.out.println("notResultOne in binary: " + Integer.toBinaryString(notResultOne));System.out.println("notResultTwo in binary: " + Integer.toBinaryString(notResultTwo));System.out.println("andResult in hexdecimal: 0x" + Integer.toHexString(andResult));System.out.println("orResult in hexdecimal: 0x" + Integer.toHexString(orResult));System.out.println("xorResult in hexdecimal: 0x" + Integer.toHexString(xorResult));System.out.println("notResultOne in hexdecimal: 0x " + Integer.toHexString(notResultOne));System.out.println("notResultTwo in hexdecimal: 0x" + Integer.toHexString(notResultTwo));}}

练习11:(3) 以一个最高有效位为1的二进制数字开始(提示:使用十六进制常量),用有符号右移操作符对其进行右移,直至所有的二进制位都被移出为止,每移一位都要使用Integer.toBinaryString()显示结果。

答案:

package thinkinginjava.chapterthree;public class ChapterThreeExerciseEleven {public static void main(String[] args) {Integer i = Integer.MAX_VALUE;System.out.println(Integer.toBinaryString(i));System.out.println(Integer.toHexString(i));while(i != 0){System.out.println(Integer.toBinaryString(i >>= 1));}}}

练习12:(2) 以一个所有位都为1的二进制的数字开始,先左移它,然后用无符号右移操作符对其进行右移,直至所有的二进制位都被移出为止,每移一位都要使用Integer.toBinaryStirng()显示结果。

答案:

package thinkinginjava.chapterthree;public class ChapterThreeExerciseTwelve {public static void main(String[] args) {Integer i = Integer.MAX_VALUE;System.out.println(Integer.toBinaryString(i <<= 1));while(i != 0){System.out.println(Integer.toBinaryString(i >>>= 1));}}}

练习13:(1) 编写一个方法,它以二进制形式显示char类型的值。使用多个不同的字符来展示它。

答案:

package thinkinginjava.chapterthree;public class ChapterThreeExerciseThirteen {public static void main(String[] args) {printCharInBinary('A');printCharInBinary('B');printCharInBinary('1');}public static void printCharInBinary(char c){String binaryString = Integer.toBinaryString(c);System.out.println("Character: " + binaryString + "-> Binary: "+ String.format("%16s", binaryString).replace(' ','0'));}}

练习14:(3) 编写一个接收两个字符串参数的方法,用各种布尔值的比较关系来比较这两个字符串,然后把结果打印出来。做==和!=比较的同时,用equals()作测试。在main()里面用几个不同的字符串对象调用这个方法。

答案:

package thinkinginjava.chapterthree;public class ChapterThreeExerciseFourteen {public static void main(String[] args) {String strOne = "hello";String strTwo = "hello";String strThree = new String("hello");String strFour = "world";String strFive = "Hello";compareString(strOne, strTwo);compareString(strOne, strThree);compareString(strOne, strFour);compareString(strOne, strFive);}public static void compareString(String strOne, String strTwo) {System.out.println(strOne + "&" + strTwo);System.out.println("strOne == strTwo : " + (strOne == strTwo));System.out.println("strOne != strTwo : " + (strOne != strTwo));System.out.println("strOne.equals(strTwo) : " + (strOne.equals(strTwo)));}}


http://www.ppmy.cn/ops/133655.html

相关文章

动态规划 —— dp 问题-买卖股票的最佳时机III

1. 买卖股票的最佳时机III 题目链接&#xff1a; 123. 买卖股票的最佳时机 III - 力扣&#xff08;LeetCode&#xff09;https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-iii/description/ 2. 题目解析 3. 算法原理 状态表示&#xff1a;以某一个位置为结尾或者…

目前区块链服务商备案支持的区块链技术类型

status"success"data1-name"比特币/Bitcoin/BTC"3-name"以太坊/Ethereum/ETH"875-name"超级账本/Hyperledger"5-name"柚子/EOS/EOS"6-name"恒星链/Stellar/XLM"1055-name"Quorum"7-name"莱特币/Li…

如何在Puppeteer中实现表单自动填写与提交:问卷调查

一、介绍 在现代市场研究中&#xff0c;问卷调查是一种重要的工具。企业通过在线问卷调查了解消费者对产品或服务的需求、偏好和满意度&#xff0c;从而为产品开发、市场营销和服务优化提供指导。然而&#xff0c;对于爬虫技术专家来说&#xff0c;批量自动化地填写和提交问卷…

OCRSpace申请free api流程

0.OCRSpace概述 OCR.Space是一款功能强大的在线光学字符识别&#xff08;OCR&#xff09;工具。 格式与语言支持广泛&#xff1a;支持多种图片格式&#xff0c;如 JPG、PNG、GIF、PDF 等作为输入。在语言方面&#xff0c;它支持英语、中文、法语、德语等20多种语言的文字识别…

SQL 外连接

1 外连接 外连接是一种用于结合两个或多个表的方式&#xff0c;返回至少一个表中的所有记录。 左外连接 LEFT JOIN&#xff0c;左表为驱动表&#xff0c;右表为从表。返回驱动表的所有记录以及从表中的匹配记录。如果从表没有匹配&#xff0c;则结果中从表的部分为NULL。 右…

机器学习(1)线性回归

前言   线性回归算法是机器学习深度学习入门的必学的算法&#xff0c;其算法原理虽然简单&#xff0c;但是却蕴含着机器学习中的一些重要的基本思想。许多功能更为强大的非线性模型可在线性模型的基础上通过引入层级结构或高维映射而得。同时机器学习深度学习的核心思想就是优…

渗透测试之 -- Linux基础

声明 学习视频来自B站UP主 泷羽sec,如涉及侵泷羽sec权马上删除文章笔记的只是方便各位师傅学习知识,以下网站涉及学习内容,其他的都与本人无关,切莫逾越法律红线,否则后果自负 一、Openssl 1、openssl passwd -1 123 openssl一个开源加密工具包&#xff0c;用于各种解密、加…

宝塔面板中使用Acme SSL.cn申请的免费HTTPS SSL证书安装步骤

目录 1. 申请SSL证书 2. 宝塔面板安装SSL证书 申请免费ssl证书的网站&#xff1a;AcmeSSL.cn - 一个提供免费HTTPS证书申请的ACME自动化工具网站-免费提供申请Lets Encrypt、ZeroSSL、Google Public CA等CA证书-ACME自动化管理工具。 1. 申请SSL证书 按照上述提到的注册登录、…