項目html |
內容java |
這個做業屬於哪一個課程算法 |
<任課教師博客主頁連接>https://www.cnblogs.com/nwnu-daizh/數組 |
這個做業的要求在哪裏數據結構 |
<做業連接地址>https://www.cnblogs.com/nwnu-daizh/p/11475377.htmlapp |
做業學習目標框架 |
1. 適應老師教學方式,能按照自主學習要求完成本週理論知識學習;eclipse 2. 掌握Java Application程序結構;函數 3. 掌握Java語言的數據類型與變量;學習 4. 學會使用Java運算符構造各種表達式; 5. 掌握Java Application輸入輸出技術; 6. 掌握Java流程控制技術(分支、循環);(重點) 7. 掌握Math類、String類的用法。(難點) |
第一部分:結合Java和C基礎語法的異同比較,總結本週理論知識
第3章 Java的基本程序設計結構
1.總體基本知識框架:3.1 一個簡單的Java應用程序 3.2 註釋 3.3 數據類型 3.4 變量
3.5 運算符 3.6 字符串 3.7 輸入輸出 3.8 控制流程
3.9 大數值 3.10 數組
2.知識點:
Java對大小寫敏感。
Java定義類名規則:名字必須以字母開頭,後面能夠跟字母和數字的任意組合。長度基本上沒有限制。可是不能使用Java保留字做爲類名。
標準的命名規則爲:類名是以大寫字母開頭的名詞。若是名字由多個單詞組成,每一個單詞的第一個字母都應該大寫。
1)基本知識:
Java中與C語言的不一樣:標識符可用 美圓符號 ;可做爲 類名,對象名
2)數據類型:分爲整型、浮點、字符、布爾 四大類型;
與C語言的不一樣:一、整型中的 byte型 二、布爾類型:boolean型
3)字符串:
4)變量、常量、運算符:
5)數學函數與常量、隱士類型轉換、強制類型轉換:
6)String類:
7)輸入輸出:
1.讀取輸入:經過控制檯進行輸入時,須要構建一個Scanner對象,並與「標準輸入流」System.in關聯。
Scanner in = new Scanner(System.in);
2.格式化輸出:使用System.out.print(x)將數值x輸出到控制檯上,這條命令將以x對應的數據類型所容許的最大非0數字位數打印出x。
3.文件輸入與輸出:須要用一個File對象構造一個Scanner對象。如:PrintWriter out = new PrintWriter("myfile.txt"); 想寫入文件,就須要構造一個PrintWriter對象,在構造器中,只須要提供文件名。
8)控制流程:Java有5種語句
1.方法調用語句: System.out.println("Hello!");
2.表達式語句: x=23;
i++;
3.複合語句:用{ } 把一些語句括號起來就構成一個語句。
{
z=x+23;
System.out.println("Hello!");
}
4.控制語句:if 、switch 、for 、while 、do-while
5.packege語句和import語句
9)大數值
若是基本地整型和浮點型數據沒法達到要求地精度,那麼可使用Java.math包中地兩個類,BigInteger和BigDecimal。這兩個類能夠操做任意長地數字。
BigInteger類實現了任意精度地整數運算,BigDecimal類實現了任意精度地浮點運算。
10)數組
1.數組時一種數據結構,它是有序數據地集合,數組中的每一個元素的數據類型都是相同的。
2.對元素的肯定是由數組名和它的下標實現的,如a[0]表明數組a的第一個元素,a[1]表明數組a的第二個元素,以此類推。
3.數組的建立:格式:數組名字 = new 數組元素類型【個數】 如:boy = new float[5];
4.數字數組建立後,全部數組元素自動初始化爲0;boolean數組建立後數組元素初始化爲false;對象數組初始化爲null。
5.數組建立後不能再更改大小。
11)數組的初始化及匿名數組
1.一維數組的初始化
2.二維數組的初始化
3.匿名數組
12)for each循環
for循環語句依次輸出a數組每一個元素的程序段,如:
for(int i =0; i < a.length; i++)
System.out.println(a[i]);
13)數組的操做:
1.數組拷貝 :Java容許把一個數組變量拷貝給另外一個變量時,兩個變量都指向相同的數組。
2.數組排序:調用Java.util.Arrays類中的sort方法,可對一個數字數組進行排序。
14)多維數組
15)不規則數組
16)數組總結:數組使用前要肯定大小,能夠在程序中根據須要動態生成數組(如用表達式計算出大小)。
一旦生成數組,大小不可改變。Java不支持變成數組。數組的屬性——length:數組元素的個數。
Java中的數組做爲一種對象類型,能夠做爲方法的參數,方法調用時傳遞的是指向數組的引用。
第二部分:實驗部分
實驗名稱:實驗二 Java基本程序設計(1)
1. 實驗目的:
(1)進一步熟悉命令行和IDE兩種方式下java程序開發的基本步驟;
(2)掌握Eclipse集成開發環境下導入Java源程序的過程;
(3)掌握Java語言構造基本程序的數據類型、變量、運算符、各種表達式、輸入輸出、流程控制的基本語法;
(4)掌握Math類、String類、StringBuilder類的用法。
3. 實驗步驟與內容:
實驗1:java風格九九乘法表程序互評
評分要求:結合評分程序的運行狀況,給出評分程序成績,滿分5分,每一個錯誤扣1分,扣至0分爲止;
評分者每發現一個正確的錯誤,本人實驗1得分加1分,最高加5分。
實驗2:編寫包含如下代碼片斷的java應用程序,輸出字符串類對象s3的值。
String s1=「Hello!」;
String s2=「World」;
String s3=s1+s2;
代碼及操做運行結果以下:
package project2; public class sss { public static void main(String[] args) { // TODO Auto-generated method stub String s1="Hello!"; //用String定義s1字符串類型的變量,賦值"Hello!" String s2="World"; //用String定義s2字符串類型的變量,賦值"World" String s3=s1+s2; //用String定義s3字符串類型的變量,賦值s1+s2 System.out.println(s3); //輸出s3 } }
實驗3:更改實驗2中s1、s2、s3爲StringBuilder類對象,觀察程序運行結果並與實驗2結果進行對比,理解String類對象與StringBuilder類對象的區別。
1)將實驗2進行更改的代碼以及運行結果以下:
package project2; public class hhh { public static void main(String[] args) { // TODO Auto-generated method stub StringBuilder s1=new StringBuilder("Hello!"); //建立StringBuilder對象s1並賦值爲"Hello!" StringBuilder s2=new StringBuilder("World"); //建立StringBuilder對象s2並賦值爲"World" StringBuilder s3=new StringBuilder(); //建立StringBuilder對象s3 s3.append(s1); //調用append方法向s3添加s1 s3.append(s2); //調用append方法向s3添加s2 System.out.println(s3); //輸出s3 } }
2)String類對象與StringBuilder類對象的區別:
1.String類
1) 字符串是常量;
2)String自己是不可改變的,它只能賦值一次,每次內容發生改變,都會生成一個新的String類對象,而後原有的對象引用新的對象。(它們的值在建立以後不能更改)
3)String實現字符串加法,會在內存中建立不少字符串佔用內存,佔用內存越多,程序的效率就越低。
4)String操做示意圖
2.StringBuilder類
1)每次操做都是對自身對象進行操做,而不是產生新的對象,其所佔空間會隨着內容的增長而擴充;
2)字符串緩衝區,能夠提升字符串的效率,支持可變的字符串;
3)StringBuilder實現字符串加法,始終是一個數組,佔用內存少,因此效率高。
4)若是須要用許多小段的字符串構建一個字符串,那麼,首先,構建一個空的字符串構建器:
StringBuilder builder = new StringBuilder();
當每次須要添加一部份內容時,就調用 append 方法。
builder.append(ch); // appends a single character
builder.append(str); // appends a string
在須要構建字符串時就調用 toString 方法,將能夠獲得一個 String 對象,其中包含了構建器中的字符序列。
String completedString = builder.toString();
5)StringBuilder操做示意圖
實驗4:在命令行方式下調試運行下列程序,理解java應用程序命令行參數的用法。
1)程序代碼以下:
public class Message { public static void main(String[] args) { if (args[0].equals(「-h」)) System.out.print(「Hello」); else if(args[0].equals(「-g」)) System.out.print(「goodbye,」); for(int i=1;i<args.length;i++) System.out.print(「 」+args[i]); System.out.println(「!」); } }
2) 運行以下:
3) Java程序中main方法裏存在「String[] args」參數:
1. 「String[] args」是命令行參數(其接收運行參數)
Java程序運行的同時,能夠經過兩種方式將命令行參數賦給給「String[] args」:
一種是在Java命令行後面帶上參數,另外一種是經過編譯器(本文將用eclipse進行演示)進行輸入,以後虛擬機就直接把他們存放到「String[] args」數組中。
2. args是命令行參數,由於參數能夠爲多個,因此要用數組來存取咱們輸入的參數值。
3. 針對以上程序,在命令行中調試運行:
輸入 Java Message -h (或 Java Message -g)回車,即將參數賦給 args 數組,運行程序。
4.若在eclipse中進行,右鍵找到run as,選擇Run Configurations,在文件Message中,找到它的 Arguments,在program arguments中輸入參數 -h (-g) 後點擊run便可。
實驗5:Eclipse環境下導入第3章示例程序InputTest.java步驟:
1)新建 java project
2)選擇File->import->File ystem->Next,點擊上方Browse選擇導入源程序並選中,Browse選擇源程序導入位置爲新項目InputTest/src位置後,點擊finish完成導入。
3) 打開InputTest項目src文件夾的缺省包,雙擊InputTest.java在IDE源程序編輯區打開文件。
4)右鍵單擊InputTest.java文件名打開快捷菜單,選擇Run as->java application運行此程序。理解代碼中Scanner類對象用法,掌握java控制檯輸入方法。
1.Scanner類對象用法:
1)使用Scanner的步驟:
a: 必須導包 import java.util.Scanner; 可以使用快捷鍵ctril+shift+o
b:建立對象 Scanner sc = new Scanner(System.in);
c:調用方法 sc.xxx( )
2.Scanner類的方法
1)public int nextInt( ) : 讀取一個int類型的值
2)public String nextLine( ):讀取一個String類型的值
3)public boolean hasNextXxx():判斷是不是某種類型的元素
3.Scanner類的方法總結:
1)next( ): 只讀取輸入直到空格。它不能讀兩個由空格或符號隔開的單詞。此外,next()在讀取輸入後將光標放在同一行中。(next()只讀空格以前的數據,而且光標指向本行)
2)nextLine():讀取輸入,包括單詞之間的空格和除回車之外的全部符號(即。它讀到行尾)。讀取輸入後,nextLine()將光標定位在下一行。
3)nextline( ):只讀取數值,剩下的「\n」尚未讀取,並將光標放在本行中 。
4)hasNextInt( ):判斷是不是int 類型的元素,進而獲取元素。
5)next()方法並不能返回帶空格、Tab鍵、回車符的字符串,而nextLine能夠。
4.上述程序中的,Scanner in=new Scanner(System.in);
System.in 是得到一個鍵盤輸入流,監聽鍵盤輸入的數據,因此,Scanner in=new Scanner(System.in);就已經獲得了獲取鍵盤輸入的實列。
Scanner 是一個類,in 是一個實列或者說是對象,new 是一個建立對象的方法…Scanner類表如今得到控制檯輸入,至關於與聲明一我的類(Scanner),這我的類是誰(in),後面新建立一我的類new Scanner(system.in),system.in 表示他有什麼特徵。換言之,就是,新建立一個輸入的Scanner 對象,而後賦值給in。
在使用時要關閉 流 ,不然會有警報。
實驗6:按照實驗5操做步驟,導入WriteReadFileTest.java示例程序,運行程序並理解程序代碼,觀察項目文件夾下文件myfile.txt的內容,掌握文件的輸入輸出操做。
1.導入WriteReadFileTest.java示例程序,運行程序結果以下:
2.文件myfile.txt的內容
3.使用 PrintWriter out = new PrintWriter("myfile.txt"); 寫入文件。創建掃描器 並 寫入內容out.println(""); 最後關閉流 out.close();
實驗7:按照實驗5的操做步驟,導入第3章3-3——3-4示例程序,掌握兩個程序循環控制結構的用途。
1)導入的3-3示例程序以下:
3-3 該程序使用了while語句循環,當條件爲true時,while循環執行一條語句(也能夠是一個語句塊);若是開始循環條件的值就爲false,則while循環體一次也不執行。
語法結構: while(循環條件)
{
循環體;
}
while 循環語句首先檢測循環條件。所以,循環體中的代碼有可能不被執行。
3-3的while循環:當 balance < goal 條件知足時,進入循環,當條件不知足時跳出。
2)導入3-4示例程序以下:
3-4 該程序使用了 do-while 循環語句,先執行語句(一般是一個語句塊),再檢測循環條件;循環體至少執行一次。
語法結構: do {
循環操做(先執行一遍循環操做)
}while (循環條件); (分號不可少)
符合條件,循環繼續執行;不然,循環退出。
3)while 與 do-while 循環的不一樣點:
1.語法、執行次序不一樣:while循環,先判斷,再執行; do-while 循環,先執行,再判斷。
2.初始狀況不知足循環條件時:while循環一次都不會執行;do-while循環無論任何狀況都至少執行一次。
實驗8:按照實驗5的操做步驟,導入第3章3-5示例程序,理解抽獎機率計算算法。
1)導入3-5示例程序以下:
3-5該程序使用了for循環,此程序用來計算抽獎中獎的機率,若是從n個數字中抽取K個數字,可用如下公式進行計算獲得結果。
compute binomial coefficient n*(n-1)*(n-2)*...*(n-k+1)/(1*2*3*...*k)
使用for循環語句進行計算則有:
int lotteryOdds = 1; for (int i = 1; i <= k; i++) lotteryOdds = lotteryOdds * (n - i + 1) / i;
4.實驗總結:
在這次實驗中,我進一步熟悉命令行和IDE兩種方式下Java程序開發的基本步驟,掌握了eclipse集成開發環境下導入Java源程序的過程,並完成了實驗;也掌握了Java語言構造基本程序的數據類型,變量,運算符,各種表達式,輸入輸出,流程控制的基本語法,Java與C語言有着不一樣的地方,經過對教材,課件,教學視頻以及百度查閱,實驗過程,理解掌握Math類、String類、StringBuilder類的用法。本週的實驗難度不算大,再經過學長的視頻疑惑解答,給咱們講解了較爲難懂的地方,在聽懂以後比較順利的完成了實驗內容。但對於知識點的總結還存在些許不足的地方,若有些知識點沒能很好的補充,不是很全面,要將其餘細節的地方進一步補充完整。示例中經過while循環,do-while循環,for循環語句來實現程序,對於理解程序中的步驟原理有着些許的困難,但我相信多琢磨琢磨會明白透徹的,會愈來愈好的。