《Java技术》第一次作业
(一)、學(xué)習(xí)總結(jié)
1.在java中通過Scanner類完成控制臺(tái)的輸入,查閱JDK幫助文檔,Scanner類實(shí)現(xiàn)基本數(shù)據(jù)輸入的方法是什么?不能只用文字描述,一定要寫代碼,通過具體實(shí)例加以說明。
文本掃描類Scanner(java.util.Scanner),可以使用不同的next方法將輸入的文本轉(zhuǎn)換為不同類型的值。
獲取基本類型數(shù)據(jù)的方法是:
nextInt():讀取整型數(shù)據(jù)
nextDouble():讀取雙精度性數(shù)據(jù)
next():讀取輸入的下一個(gè)單詞(空格作為分隔符)
nextLine():讀取輸入的下一行內(nèi)容
2.Random類和Math類的random()方法都能產(chǎn)生隨機(jī)數(shù),這兩種方式有什么區(qū)別,各有什么特點(diǎn)呢?查閱JDK幫助文檔,并舉例加以說明。
util的random是一個(gè)類:包含nextInt(),nextDouble ()等類似的方法。math的random只是一個(gè)方法:返回帶正號(hào)的 double 值,該值大于等于 0.0 且小于 1.0。例如,對(duì)比兩種方法產(chǎn)生的隨機(jī)數(shù):
import java.util.Random; public class Demo{public static void main(String args[]){Random a=new Random();int a1=a.nextInt();double b=Math.random(); System.out.println("這是調(diào)用Random()類產(chǎn)生的隨機(jī)數(shù)");System.out.println(a1);System.out.println("這是調(diào)用Math.random()方法產(chǎn)生的隨機(jī)數(shù)");System.out.println(b);} }使用Math.Random()的方法來產(chǎn)生Int類型的隨機(jī)數(shù),例如產(chǎn)生一個(gè)0~100之間的隨機(jī)數(shù):
import java.util.Random; public class Test{public static void main(String args[]){Random a=new Random();int b=a.nextInt();int c=(int)(Math.random()*100); System.out.println("這是調(diào)用Random()類產(chǎn)生的隨機(jī)數(shù)");System.out.println(b);System.out.println("這是調(diào)用Math.random()方法產(chǎn)生的隨機(jī)數(shù)");System.out.println(c);} }兩種方法都能夠起到相同的作用,但是,如果許多線程需要以極高的速率生成偽隨機(jī)數(shù),那么Math.random()可能會(huì)減少每個(gè)線程對(duì)擁有自己偽隨機(jī)數(shù)生成器的爭(zhēng)用。所以很多應(yīng)用程序會(huì)發(fā)現(xiàn) Math.random() 方法更易于使用。
3.運(yùn)行下列程序,結(jié)果是什么?查閱資料,分析為什么。
public class Test {public static void main(String args[]) { double a = 0.1;double b = 0.1;double c = 0.1;if((a + b + c) == 0.3){System.out.println("等于0.3");}else {System.out.println("不等于0.3");}} }該程序運(yùn)行結(jié)果為:不等于0.3
原因:浮點(diǎn)型數(shù)據(jù)在進(jìn)行運(yùn)算時(shí)有極小誤差。
為了處理精度損失的問題,可以使用java.math.BigDecimal類,查閱JDK幫助文檔或教材p378,對(duì)上述程序進(jìn)行修改。
import java.math.BigDecimal; import java.math.MathContext; public class Test {public static void main(String args[]) { BigDecimal a = new BigDecimal(0.1);BigDecimal b = new BigDecimal(0.1);BigDecimal c = new BigDecimal(0.1);if(a.add(b).add(c).round(new MathContext(1)).equals(new BigDecimal("0.3"))){System.out.println("等于0.3");}else {System.out.println("不等于0.3");}}}以上程序輸出結(jié)果為:等于0.3
4.在環(huán)境配置中,PATH和CLASSPATH、JAVA_HOME的作用:
- 1). PATH環(huán)境變量。作用是指定命令搜索路徑,在i命令行下面執(zhí)行命令如javac編譯java程序時(shí),它會(huì)到PATH變量所指定的路徑中查找看是否能找到相應(yīng)的命令程序。我們需要把jdk安裝目錄下的bin目錄增加到現(xiàn)有的PATH變量中,bin目錄中包含經(jīng)常要用到的可執(zhí)行文件如javac/java/javadoc等待,設(shè)置好PATH變量后,就可以在任何目錄下執(zhí)行javac/java等工具了。
- 2). CLASSPATH環(huán)境變量。作用是指定類搜索路徑,要使用已經(jīng)編寫好的類,前提當(dāng)然是能夠找到它們了,JVM就是通過CLASSPTH來尋找類的。我們需要把jdk安裝目錄下的lib子目錄中的dt.jar和tools.jar設(shè)置到CLASSPATH中,當(dāng)然,當(dāng)前目錄“.”也必須加入到該變量中。
- 3). JAVA_HOME環(huán)境變量。它指向jdk的安裝目錄,Eclipse/NetBeans/Tomcat等軟件就是通過搜索JAVA_HOME變量來找到并使用安裝好的jdk。
(二)、實(shí)驗(yàn)總結(jié)
- 實(shí)驗(yàn)內(nèi)容:
- 1.看商品猜價(jià)格及題目擴(kuò)展
- 設(shè)計(jì)思路
- 首先利用隨機(jī)數(shù)得到商品的價(jià)格,利用循環(huán)控制用戶猜價(jià)格的次數(shù),定義一個(gè)變量保存用戶每次猜價(jià)格的得分,再定義一個(gè)新的變量保存用戶多次猜價(jià)格累計(jì)的分?jǐn)?shù),在一輪猜價(jià)格的最后輸出商品的價(jià)格,游戲結(jié)束時(shí)輸出用戶的總得分和猜價(jià)格的次數(shù)。
- 注意
- 因?yàn)橛脩糨斎胧欠窭^續(xù)游戲指令時(shí)是使用字符串類型定義的,所以在比較商品價(jià)格大小的時(shí)候不能用==,要是用String類的equals方法。str.equals(str1 );- 2.萬年歷
- 設(shè)計(jì)思路
- 1)編寫一個(gè)方法判斷閏年。
- 2)根據(jù)某年是閏年還是平年編寫一個(gè)方法判斷某年某月有多少天。
- 3)編寫一個(gè)方法計(jì)算某年某月之前距離1900年1月有多少天。因?yàn)槊總€(gè)月的天數(shù)都會(huì)不一樣,所以要分別判斷某月的天數(shù)后再計(jì)算距離1900年1月的總天數(shù)。
- 4)編寫一個(gè)方法輸出某年某月的日歷。已知一個(gè)判斷星期幾的方法:1+totaldays%7的值為1-7時(shí)分別為星期一到星期日。
- 問題
- 1)輸出日歷判斷是否換行時(shí),要利用距離1900年1月和7的關(guān)系。即 1+totaldays%7=?。值為7時(shí)換行。
- 設(shè)計(jì)思路
- 3.評(píng)分系統(tǒng)
- 設(shè)計(jì)思路
- 1)用一個(gè)二維數(shù)組存放每個(gè)評(píng)委給每個(gè)選手的得分。
- 2)分別用一維數(shù)組表示每個(gè)選手的最高分,最低分,和去掉一個(gè)最高分一個(gè)最低分的平均分。
- 3)使用冒泡 排序法對(duì)二維數(shù)組的行從高到低排序,得到每一行的最大值最小值分別存放在表示最高分和最低分的一維數(shù)組中。
- 4)利用循環(huán)分別計(jì)算每個(gè)選手的最終得分,存放在平均分?jǐn)?shù)組中。
- 5)按照從高到低的順序分別輸出每個(gè)選手的得分和每個(gè)選手的平均分。
- 問題
- 1)使用冒泡排序法對(duì)二維數(shù)組排序是要注意數(shù)組越界的問題。
- 2)利用三層循環(huán)對(duì)二維數(shù)組排序,第一層循環(huán)改變行,把二維數(shù)組的每一行當(dāng)做一個(gè)一維數(shù)組在第二層和第三層循環(huán)中使用冒泡排序法對(duì)二維數(shù)組的每一行排序。
(三)、代碼托管
- 設(shè)計(jì)思路
- 2.萬年歷
- 碼云提交歷史截圖
- 1.看商品猜價(jià)格及題目擴(kuò)展
轉(zhuǎn)載于:https://www.cnblogs.com/xxs812/p/8593965.html
總結(jié)
以上是生活随笔為你收集整理的《Java技术》第一次作业的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 17秋 软件工程 团队第五次作业 Alp
- 下一篇: Java 面向对象的设计原则