Java作业(1)
(一)學習總結
1.在java中通過Scanner類完成控制臺的輸入,查閱JDK幫助文檔,Scanner類實現基本數據輸入的方法是什么?不能只用文字描述,一定要寫代碼,通過具體實例加以說明。
Scanner.的用法主要有以下的幾種方法
1.Scanner.nextLine(); //讀取下一行(包括空格,tab等)
2.Scanner.next()://String
3.Scanner.nextInt()://int
4.Scanner.nextFloat()//float
5.Scanner.nextBoolean()//boolean
6.Scanner.nextDouble()//double
7.Scanner.nextByte()//byte
8.Scanner.nextShort()//short
9.Scanner.char b =s.next().charAt(0);//char
以代碼的方式位
...
package shuru; import java.util.Scanner; public class shuru {public static void main(String[] args) {// TODO Auto-generated method stubScanner input=new Scanner(System.in);String a =input.nextLine();//讀取下一行(包括空格,tab等)System.out.println(a) ;String b =input.next();//StringSystem.out.println(b) ;int c =input.nextInt();//intSystem.out.println(c) ;float d=input.nextFloat();//floatSystem.out.println(d) ;boolean e=input.nextBoolean();//boolean System.out.println(e) ;double f=input.nextDouble();//doubleSystem.out.println(f) ;byte g=input.nextByte();//byteSystem.out.println(g) ;short h=input.nextShort();//shortSystem.out.println(h) ;char i =input.next().charAt(0);//charSystem.out.println(i) ; }}...
運行結果
2.Random類和Math類的random()方法都能產生隨機數,這兩種方式有什么區別,各有什么特點呢?查閱JDK幫助文檔,并舉例加以說明。
答:
Math.random()返回的只是從0到1之間的小數,如果要50到100,就先放大50倍,即0到50之間,這里還是小數,如果要整數,就強制轉換int,然后再加上50即為50~100.
最終代碼:(int)(Math.random()*50) + 50
Random類產生的隨機數,在其最大值范圍內,按照概率均勻分布的。也就是說,兩個種子數相同的Random對象,第一次生成的隨機數字完全相同,第二次生成的隨機數字也完全相同。
以下程序都是產生0-50的隨機數
...
package suijishu;import java.util.Random;public class suijishu {public static void main(String[] args) {Random rand=new Random() ;int x=rand.nextInt(100)+1 ;double y=Math.random()*50;int z=(int)(Math.random()*50); System.out.println(x) ;System.out.println(y) ;System.out.println(z) ;}}...
運行結果 x 是0-49的整數,y是0-50的雙精度小數,z是0-50的整數。
3.運行下列程序,結果是什么?查閱資料,分析為什么。
為了處理精度損失的問題,可以使用java.math.BigDecimal類,查閱JDK幫助文檔或教材p378,對上述程序進行修改。
答:程序運行結果是:不等于0.3
原因:在Java使用分數和指數來表示浮點類型的數據時,在加減的過程中,產生了浮點型誤差,不能使用“==”來比較浮點類型數據的運算結果。
...
package test; import java.math.BigDecimal; 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);BigDecimal d = new BigDecimal(1);System.out.println(a.add(b).add(c));if(a.add(b).add(c).divide(d,2,BigDecimal.ROUND_HALF_UP).doubleValue()==0.3){System.out.println("等于0.3");}else {System.out.println("不等于0.3");} }}
...
4.本次學習要點中其他需要總結的內容:因人而異,根據自己的學習情況,記錄難掌握或難理解的內容,以及學有心得的內容。還存在哪些問題,也可以提出來,對于同學在博客中提出的問題,大家可以積極討論,互幫互學。
1.數組中的定義的double類型的運算,時常忘記類型的轉換
2.運用方法時,變量的聲明混亂,為了方便把上面的方法復制下來,把里面上次的變量也帶了下來,而第二次的帶入的方法不跟第一次一樣,在最后檢查錯誤的時候,反而浪費時間。
3.數組的長度用 數組名.length ,二維數組的一維空間長度 數組名[ 行數].length。
4.“==”只能進行數的比較,字符串的比較不能用,要用equal方法。若用”==“比較,比較的是地址。
(二)實驗總結
程序設計思路:
1.首先聲明import java.util.Scanner,import java.util.Random.以便于鍵盤的輸入和隨機數的產生。
2.先建立String字符串str1=“yes”,以便于用戶選擇是否繼續進行的標準。
3.設計Price方法,用Random來建立隨機價格。
4.運用while循環,次數從5開始遞減,Scanner來讀寫用戶所輸入的價格
(1)如果猜的價格比真正的價格高,提示價格高,那么進行下一次輸入。再進行i--;
(2)如果猜的價格比真正的價格低,提示價格低,那么進行下一次輸入。再進行i--;
(3)如果猜的價格和真正的價格一樣,結束循環。
(4)若i=0結束競猜,退出循環。
5.對i的值進行比較,分別給出100,80,60,40,20,0分的判定。
6.提示是否進行游戲,輸入的字符串與str1比較,其中引用equal方法比較。
(1)若相等,則繼續重新從2.項開始循環。
(2)若不想等,則退出。
7.輸出總得分和總次數。
程序設計思路:
1.設計布爾型方法isLeap來判斷年份是閏年還是平年。
2.設計整型方法days來判斷月份的天數,其中2月的天數是29還是而是28,引用1的isLeap方法。
3.設計整形方法totalDays來計算從1900年到所輸入年份月份的一號之前有多少天。其中天數的運算引用了days方法判斷月份之前的天數,以及引用isLeap方法來計算1900年到輸入年份之前的天數。
4.在3中計算的總天數結余7再加1,來判斷所輸入年份月份的第一天是星期幾,利用制表符和for循環來輸出日歷,其中月份的天數再次引用days方法。
程序設計思路:
1.設計了兩種評分的方法。一種是隨機數輸入,一種是手動輸入。
(1)隨機數輸入是聲明Random,產生隨機數填入score數組。
(2)手動輸入是靠Scanner進行鍵盤的輸入。
2.把數組的每行都進行選擇排序,把最高分放到數組的最后位置。
3.把數組的每行都進行選擇排序,把最低分放到數組的倒數第二位置。
4.把數組的每行的前八個分數進行平均分運算,再放到score1數組中。
5.把score數組的分數進行冒泡排序,輸出分數排行榜。
托管:
轉載于:https://www.cnblogs.com/wgy774553994/p/8576252.html
總結
- 上一篇: HyperLedger Fabric 错
- 下一篇: js中如何优雅的解析数据