第一章 Java基礎程式目標:減輕現實生活中一類人的工作量,提高工作效率。學員最終可以書寫系統:超市管理系統,POS機系統等入庫單銷售單01.課程重點 五大重點:01.分支(選擇)結構 02.迴圈結構03.數組04.二重迴圈05.帶參方法02.什麼是電腦程式?解析:就是為了完成某一項工作而執行的一...
第一章 Java基礎
程式目標:減輕現實生活中一類人的工作量,提高工作效率。
學員最終可以書寫系統:
超市管理系統,POS機系統等
入庫單
銷售單
01.課程重點
五大重點:
01.分支(選擇)結構
02.迴圈結構
03.數組
04.二重迴圈
05.帶參方法
02.什麼是電腦程式?
解析:就是為了完成某一項工作而執行的一系列有序指令的集合。
03.Java相關的技術有哪些?
JavaSE(桌面應用開發) JavaEE(Web開發)
老師,你教教我如何判定一個程式是桌面程式還是web程式?
解析:瀏覽器:
IE
搜狗瀏覽器(內核IE) 傲游 世界之窗 360 QQ 獵豹
FireFox
Opera
IE不等於瀏覽器,只是瀏覽器的一種
判定規則:如果一個程式(軟體)不需要藉助瀏覽器就可以執行的,那麼就是桌面應用程式
反之,是web應用程式。
04.開發Java程式的步驟有哪些?
編寫,編譯,運行
05.Java程式的基本框架是什麼?
解析:外層框架和內層框架,詳細見後續講解。
06.Java的註釋類型有哪些?
單行://
多行:/**/
課程重點:
01.平臺和語言不是一碼事。一個平臺下可以運行多種語言編寫的代碼。
班級管理系統
宿舍管理系統
超市管理系統
國家電力管理系統
水費管理系統
OA管理系統
07.開發自己的第一個java程式
01.配置環境變數
001.對我的電腦點擊右鍵→屬性→高級系統設置→環境變數→系統變數,在系統變數中
查找有沒有名稱為path的變數名,如果有,直接點擊“編輯”按鈕,然後按“Home”鍵將
游標定位到第一個位置
002.打開“我的電腦”→打開C盤→找到“Program Files文件夾”→Java→jdk1.7.0_17
→bin,複製路徑
003.將複製的路徑粘貼到游標閃動的位置,然後緊跟一個分號(;)
004.一路確定,直到所有視窗消失。
005.打開“開始”→“運行”→輸入cmd→輸入javac回車,如果出現一連串中文,證明
環境變數配置成功。
02.編寫代碼
001.在D盤的根目錄創建一個名稱為Hello的尾碼名為java的文件。
002.編寫代碼
03.編譯
通過javac命令將尾碼名為.java的文件編譯成尾碼名為.class的文件(位元組碼文件)
04.運行
通過java命令運行尾碼名為.class的文件,運行的時候,尾碼名不需要
使用記事本編寫第一個Java應用步驟
1.編寫源程式
2.用javac命令將尾碼名為.java文件編譯成尾碼名為.class的文件
3.使用java命令執行硬碟上尾碼名為.class,但是點和class都不要
說有同學問,為什麼在把.class文件用java命令執行的時候,不需要尾碼?
專業人士解析:
當我們把.class文件交給JVM(Java虛擬機)的時候,它可以自動識別出尾碼。
Java執行流程
Happy.java---第一道編譯工作交給Java編譯器---->Happy.class(位元組碼文件)
-------第二道編譯交給JVM----->二進位(CPU可以識別)
08.程式編碼規範
解析:作為一個專業的程式員,編碼規範如下:
01.文件名,所有代碼的名字都必須是英文的,而且所有出現的標點符號都是在
英文半形下。
02.代碼要有縮進。
09.MyEclipse和Eclipse區別?
解析:MyEclipse(收費的)
Eclipse(免費的)
MyEclipse功能比較強大
10.Java程式的執行機制
解析:01.編譯過程
就是將尾碼名為.java的文件通過java編譯器編譯成尾碼名為.class的文件,編譯命令
javac
02.執行(運行)過程
就是通過java虛擬機(jvm)執行硬碟上尾碼名為.class的文件,執行的命令是java
05.public class HelloWorld{
public static void main(String[] args){
System.out.println("我的第一個Java程式");
}
}
我們書寫代碼是在內層框架中。
06.main方法是java程式的入口,所有程式都是從main方法的第一行代碼開始執行的。
07.println()換行列印輸出內容,print()不換行
11.轉義字元
\n:換行
\t:一系列空格
考試啊親:第二章學完後
09.java中的註釋
單行註釋//
//我是高貴的註釋:我有特權,編譯器不會理會我
//幾十萬行代碼: 3個月後 方便團隊成員閱讀,方便自己閱讀
多行註釋:/**/
10.在java中,包名中每一個點都對應硬碟上的一層文件夾
11.在真正的開發中,咱們書寫的代碼所做的單元測試,都是由程式員來完成的。
第二道測試是由專業的測試人員完成的。
Bug
作業環節:
01.日記一篇
02.前兩章單詞
03.課後第3和第四題
回到頂部第二章 變數 數據類型 運算符
1.變數
重點:01.變數就是一塊空間(用旅館的例子做類比)
02.變數三要素:數據類型 變數名 變數值
03.由於電腦記錄位置的時候不是很好找(0x0156892321)變數名(num)。
二層 左手邊 第三間(203)
2.數據類型
int
char
String
double
char類型只能存儲單個字元,如果你想存儲一個空字元,要打一個空格。
3.命名規範,如不規範,買糖吃
1.包名所有字母均小寫。
2.類名首字母大寫
3.變數首字母小寫,後續有含義的單詞首字母大寫。例如stuName stuAge
4.首字母只能是字母,下劃線和$符號中的一個,後續的內容可以是數字。
註意點:變數名不能和關鍵字重覆
4.The local variable title may not have been initialized
局部變數"title"沒有被初始化(賦值)
定義變數的兩種方式
001.先聲明,再賦值
int num;
num=5;
002.聲明的同時並賦值
int num=5;
5.表達式概念:
用運算符將操作數連接起來的式子就稱為表達式a+b
6.賦值運算符(=)
算術運算符:+ - * / %
自增運算符
int num=5;
num++;//等價於 num=num+1;
//++在前和在後的區別
System.out.println(num);
7.類型轉換
1.自動類型轉換
規則1:
在一個表達式中,如果有一個操作數是double類型,那麼整個表達式會被自動提升會double類型
規則2:類型相容,目標類型>源類型
2.強制類型轉換
規則:類型相容,目標類型<源類型
8.Scanner用法
如何接收用戶從鍵盤上錄入的內容?
路人甲說:接收int怎麼搞?
專業人士解析:input.nextInt()
路人乙收:如何接收double類型?
專業人士解析:input.nextDouble();
星爺問:如何接收字元串?
專業人士解析:input.next()
使用Scanner分三步:
01.先導入包import java.util.Scanner; (進入到商場)
02.創建一個掃描儀對象 Scanner input=new Scanner(System.in);
02.啟動掃描按鈕 String name=input.next();
9.個十百千問題
作業環節:
01.日記
02.第二章總結
03.第二章課後除了類型轉換題目
04.開通自己的Blogs
回到頂部第三章 if選擇結構
Int num=70;
If(num>90){
//執行
}else{
}
//www.cnblogs.com
//http://www.oschina.net/
//csdn
//http://www.iteye.com/magazines
//51aspx源碼網
01.分支結構
從這一章開始我們書寫的代碼可能不是從上到下順序執行,就是程式的流程可以
發生跳轉。這種結構分支結構。之前我們所有代碼都是順序執行。
02.邏輯運算符
&&:邏輯與
*表達式1&&表達式2 同真為真,其餘為假
||:邏輯或
*:表達式1&&表達式2 有真必真,其餘為假
!:邏輯非
*:取反
03.那些年,我們犯的錯
01.錯誤:javScore cannot be resolved
解決方案:可能性有兩種
*:就是變數名書寫錯誤
*:無法訪問到該變數
02.不堪入目的在類裡面直接寫代碼,代碼沒有出現在main方法中
04.if-else選擇結構
語法:if(){
}else{
}
05. java中產生隨機數方法
(int)(Math.random()*10);
範圍:從0到1,能取到0,但是取不到1
06.多重if選擇結構
if(條件){
}else if(){
}else{
}
多重if各個分支如果順序互換,語法不報錯,但是會影響程式的運行結果 。
07.在java中,比較兩個字元串是否相同,用的是equals,而不是==號。
08.嵌套if
在一個ifelse選擇結構中,又嵌套了另外一個完成的ifelse選擇結構
if(){
if(){
}else{
}
}else{
}
作業時間:
1.第四章 Switch選擇結構預習
2.日記本
3.單詞3和4章
4.今天講的
產生1到3之間的隨機數
If-else
多重if
嵌套if
回到頂部第四章 Switch選擇結構
01.使用Switch語句常見錯誤:
1.case後必加break,防止case穿透
2.case後面的變數必須各不相同
3.default塊順序可以變動,但要註意其執行順序。通常,default塊放在末尾,也可以省略
4.switch後面小括弧中表達式的值必須是整型或字元型。
02.通過hasNextInt()方法來判定用戶錄入的內容是否 是數字
04.登陸素材
System.out.println("********歡迎進入微冷的雨購物管理系統************");
System.out.println("菜單功能:");
System.out.println("\t1.登陸系統");
System.out.println("\t2.退出系統");
System.out.println("請輸入您要操作的功能,輸入數字即可,親!!!!");
System.out.println("歡迎進入主界面,該軟體為您提供了豐富的功能");
System.out.println("1.客戶信息管理");
System.out.println("2.購物結算");
System.out.println("3.真情回饋");
System.out.println("4.註銷");
System.out.println("是否參加優惠換購活動:");
System.out.println("1:滿50元,加2元換購百事可樂飲料1瓶");
System.out.println("2:滿100元,加3元換購500ml可樂一瓶");
System.out.println("3:滿100元,加10元換購5公斤麵粉");
System.out.println("4:滿200元,加10元可換購1個蘇泊爾炒菜鍋");
System.out.println("5:滿200元,加20元可換購歐萊雅爽膚水一瓶");
System.out.println("0:不換購");
System.out.print("請選擇:");
作業時間
01.15分鐘提問單詞和各種if
02.頒發前3名獎品
03.自行作業
00.預習第五章 迴圈結構
01.日記本寫一篇
02.單詞
03.博客文章(if-Switch選擇結構)
回到頂部第五章 迴圈結構(一)
1.之前學習的兩種結構
01.順序結構
02.分支結構
03.迴圈結構
2.While迴圈結構
*while迴圈
迴圈四要素:01.初始變數 02.迴圈條件 03.改變迭代變數的值 04.迴圈體
*:通過while迴圈解決“張浩寫1000遍好好學習的問題”
*:字元串作為迴圈條件
老師每天檢查張浩的學習任務是否合格,如果不合格,則繼續進行。
老師給張浩安排的每天的學習任務為:上午閱讀教材,學習理論部分,下午上機編程,掌握代碼部分。
*:初始變數為多個值的迴圈
2012年培養學員25萬人,每年增長25%,請問按此增長速度,到哪一年培訓學員人數將達到100萬人?
3.練習
*計算100之內的偶數之和
*查詢商品價格
*結賬和找零
4.do while迴圈結構
answer cannot be resolved(解析)
do{
}while(條件表達式);
do{
System.out.println("已經完成編碼");
System.out.println("合格了嗎?(y/n)");
answer=input.next(); //n
}while(answer.equals("n"));
do-while迴圈的執行機制:
首先do所在的{}裡面的內容執行一遍,然後拿變數answer和固定的字元串"n"做對比,如果
條件成立,那麼繼續執行do{}中的內容,如果不成立,那麼就退出整個do-while迴圈。
5.斷點調試步驟
設置斷點
啟動調試
單步運行
調試啟動後,運行到設置斷點的代碼行將停住
點擊F6可以單步運行程式,觀察程式運行過程
觀察變數
單步運行時可以在“變數”視圖中看到變數當前的值
發現問題
修正代碼,重新運行
解決問題
二、程式調試的目的:找出缺陷原因,修正缺陷
三、程式調試的主要方法:設置斷點、單步執行、觀察變數
回到頂部第六章 迴圈結構(二)
1.for的出現是為了精簡之前while和do-while迴圈的語法,將之前散亂排列的其中三個要素融合到了for迴圈固定的語法結構中
For(表達式1;表達式2;表達式3){
表達式1:初始變數
表達式2:迴圈條件
表達式3:迭代變數
}
作業:第七章項目
日記
回到頂部第八章 數組
1. 數組的定義:
解析:數組就是一組相同數據類型的集合,可以看成是一個承載一堆
相同類型數據的一個箱子。
2.定義一個變數相當於在記憶體上占據一塊空間
定義一個數組相當於在記憶體上占據一連串記憶體空間
3.通過length可以獲取數組中一共有幾個元素
4.案例
int[] nums=new int[3];
數組的類型其實上就是數組當中每個元素的類型。
String[] names=new String[3];//數組的聲明
names[0]="張靚穎";
names[1]="劉德華";
names[2]="周星星";//賦值
//names[3]="鞏俐";//下標越界
for(int i=0;i<names.length;i++){
System.out.println(names[i]);//使用
}
double[] nums=new double[3];
nums[0]=1.0;
nums[1]=2.0;
nums[2]=3.0;
for(int i=0;i<nums.length;i++){
System.out.println(nums[i]);
}
2.數組四要素
001.標識符:指的是數組的名字
002.數組元素:數組中的每一項數據都稱為數組的一個元素
003.數組下標:某個元素在數據中的位置或者編號
004.數組類型:每一個元素的類型
6.註意點:數組一旦定義,不可以再改變
7.使用數組的優點?
解析:001.代碼量減少了
002.方便查找
8.定義數組的時候通過new關鍵字開闢空間
*********************************************************
我們的第三節課
3.會使用三種方式來對數組賦值
方式一:通過下標賦值
names[0]
方式二:通過在聲明的同時直接通過{}賦值
int[] nums={1,2,3};
方式三:迴圈賦值(藉助數組的下標)
02.會通過迴圈的方式給數組元素賦值
03.常見錯誤
04.數組排序(升序)
05.打擂比較演算法
if(num>max){
max=num;
}
01.回顧數組
目的:為了方便的操作數據類型相同的一組數據,我們出現了數組。
因為使用數組可以簡化我們對數據的存取操作。
int[] nums=new int[3];
String[] names=new String[3];
double[] numbers=new double[3];
方式二:通過{}直接賦值
int[] nums={1,2,3,4};
*:如何獲取數組中元素的個數?
解析:length
*:通過for迴圈逐個遍曆數組中每個元素,然後輸出
for(int i=0;i<nums.length;i++){
System.out.println(nums[i]);
}
04購物金額結算
05.數組排序
如何對一些列數字進行降序排列??
解析:sun公司並沒有提供一個方法專門用於降序排列,但是我們可以轉換
一下思路,先對數組中元素進行升序排列,然後降序輸出數組中元素。
031.補充問題:
在我們自己的類中,可以對多個系統類進行導入使用。例如可同時使用Arrays和Scanner
06.打擂比較演算法
07.插入演算法(專題來講)
兩套代碼:
Eg1:
public static void main(String[] args) {
// 我有一個按照升序排列的int類型數組
//現在我想將35扔到該數組中,但是得保證整個數組依然是升序排序
int[] nums={10,20,30,40};
int insertNum=25;
//01.列印原數組的內容
for (int i = 0; i < nums.length; i++) {
System.out.print(nums[i]+"\t");
}
//先大笑三聲,終於出錯了
//怕的是你想讓程式,
System.out.println("");
//01.定義一個長度為原數組長度+1的數組
int[] newNums=new int[nums.length+1];
//02.將舊數組的第i項的值賦值給新數組
for (int i = 0; i < nums.length; i++) {
newNums[i]=nums[i];
}
//_10__ __20__ _30__ __40__ __0__
//03.找位置
int index=newNums.length-1;//應該將35扔到什麼位置
for (int i = 0; i < newNums.length; i++) {
if(newNums[i]>insertNum){
//當前的i就是我要找的位置
//所以我將i的值賦值給index偷偷記錄起來
index=i;
break;
} //[3]
} //35
//_10__ __20__ _30__ __40__ __0__
//04.元素後移,但是需要倒著移,將[i-1]的值賦值給第[i]
for (int i = newNums.length-1; i >index; i--) {
newNums[i]=newNums[i-1];
}
//05.給index位置重新賦值
newNums[index]=insertNum;
for (int i = 0; i < newNums.length; i++) {
System.out.print(newNums[i]+"\t");
}
}
Eg2:字元串相關
//插入演算法
String[] songs={"Island", "Ocean", "Pretty", "Sun"};
for (int i = 0; i < songs.length; i++) {
System.out.print(songs[i]+"\t");
}
System.out.println("");
String insertSong="zoo";
//01.定義一個新數組,長度=舊數組長度+1
String[] newsongs=new String[songs.length+1];
//02.迴圈賦值
for (int i=0;i<songs.length;i++) {
newsongs[i]=songs[i];
}
//03.找位置
int index=newsongs.length-1;//找的位置
for (int i = 0; i < newsongs.length-1; i++) {
//半年時間理解一句話::
//如果一個對象是null,那麼是不能使用它的任何屬性和方法的
if (newsongs[i].compareToIgnoreCase(insertSong)>0) {
index=i;
break;
}
}
//04.迴圈後移,倒著移
for (int i = newsongs.length-1; i >index; i--) {
newsongs[i]=newsongs[i-1];
}
//05.重新給index位置賦值
newsongs [index]=insertSong;
for (int i = 0; i < newsongs.length; i++) {
System.out.print(newsongs[i]+"\t");
}
作業:1.日記本
2.第八章預習(排序,打擂演算法 ,插入演算法)
3.第七章項目
4.上機練習1和2
3.我認為讀書、首先要思考,要深入地思考。不思考,讀書讀多少遍也沒有用。鉛筆、紙,我個人認為都是讀書時,非常重要的條件。閱讀到一定階段,就會思考,就會形成不同的主題。 隨之,就會進行主題閱讀。要學會有效地,系統地進行知識的連接。從不同的角度去創造性地思考問題。
4. 我平時工作很忙、下班後很累,回家後就想休息。我如何解決這種局面、首先要積極主動地去思考。不要讓自己的每一天,平平淡淡地度過。自己主動地、持續地去創造一些幸福快樂的時刻、巔峰的時刻。 不要讓自己的每一天碌碌無為。我的改進方法是,下班後,抽出一個小時去跑步,感受運動的巔峰時刻。這樣下班後,就不很疲勞。學習、工作、休息就會非常有效率。
5. 沒有時間來學習。 就學習本身而言,始終是最重要的事情,當然學習的方式,有很多種。 多反思,多問“為什麼”,往往會找到問題的答案。我在使用番茄鐘工作法之前,上班很累,效率很低,加班很多。使用番茄鐘工作法之後,加班逐漸地少了。
6. 要學以致用,學習有目標,我在敏捷個人的年度回顧中曾提到了,像游泳時的狀態,不游就會掉下去。沒有目標就是這種情況。更具體的目標,就是我們面臨的一個個的具體的問題。
第九章 二重迴圈
回到頂部第九章 二重迴圈
01.數組中插入元素的思想
關鍵是步驟必須清楚
001.將舊數組中每個元素複製到新數組中
002.找位置:找到用戶輸入的歌曲song應插入的位置
核心思想:將舊數組中第i項的值與song對比,如果
大於0,那麼證明該位置(index)就是我們要找的位置。
003.index之後的元素後移,這裡要註意,迴圈必須倒序執行。
一定要註意迴圈條件,避免數組下標越界。
004.給index位置賦值為song
02.二重迴圈
1.直角三角形
*
**
***
****
*****
*號(j) 行號(i)
1 1
2 2
3 3
for(i=1;i<=3;i++){
for(j=1;j<=i;j++){
System.out.print("*");
}
System.out.println("");
}
*
***
*****
*******
*********
i(行號) j(*號個數)
1 1
2 3
3 5
4 7
5 9
j=2*i-1
*****
****
***
**
*
i(行號) j(*號個數)
1 5
2 4
3 3
4 2
5 1
i+j=6
j=6-i
等腰三角形
*
***
*****
*******
*********
for(int i=1;i<=5;i++){
//第一個迴圈控制空格
for(int j=1;j<=5-i;j++){
System.out.print(" ");
}
//第二個迴圈控制*號
for(int k=1;i<=2*i-1;k++){
System.out.print("*");
}
System.out.println("");
}
解決問題的核心就是求i和j的關係
行數(i) 空格數(j) 星號(k)
1 4 1
2 3 3
3 2 5
4 1 7
5 0 9
i和j,i和k的關係
j=5-i
k=2*i-1
菱形列印
*
***
*****
*******
*****
***
*
解決問題的核心就是求i和j的關係
行數(i) 空格數(j) 星號(k)
i和j的關係
*****
***
*
***
*****
在二重迴圈中,如果內層迴圈中有break關鍵字,那麼她只能跳出當前迴圈,不能跳出外層迴圈。
*********
* *
*********
第十一章 類和對象
回到頂部第十一章 類和對象
1.什麼是對象?
解析:是不是對面有一個美女你“狂敲鍵盤”就是面向對象編程呢??
真正的對象:在現實的生活中,你肉眼能看的見或者摸得著的所有的物體都可以看成是對象,但是
判定是對象還是類有一個核心點,就是
*對象是能唯一區別於其他事物的一個個體
2類的概念:
具有相同屬性(靜態特征)和行為(操作)的一系列事物的統稱。
3.類和對象的關係
解析:類是對象的模板,對象是類的實例
解析:public class Student{
//內容
public String name;
public int age;
public String address;
//方法
public void SayHello(){
System.out.println("早上好!");
}
}
規範:在java中,定義類必須首字母大寫。
3.如何創建一個類的對象?
解析:Student stu=new Student();
stu.name="張靚穎";
stu.age=100;
stu.address="北京某地";
stu.SayHello();
4.大家眼中的對象是神馬???
解析:”另一位“,”客戶“
你自身 ,一個水杯 ,顯示器,
5.對象:現實生活中,能看得到,摸得著的有區別於其他事物獨有特征的東西我們就可以稱之為對象 。
每一個對象都有自身特有的特征,這些特征包括動態和靜態兩個方面。
動態就稱為操作(方法) ,靜態特征就稱為屬性。
6.Java,C#都是面向對象的語言,C語言面向過程
7.登陸:十一
註冊
購物車添加商品 9.5
訂單形成
8.oo:Object
oop:Object Oriented Programming,OOP,面向對象編程
OOD:Object Oriented Designer:面向對象設計
架構師
分析師
小胖:12306購票的車次查詢
小張:12306購票的網上支付功能
數值類型數據賦值圖
數組賦值圖
04.所有的類名首字母都要大寫
回到頂部第十二章 類的無參方法
1.定義方法的語法:5要素
訪問修飾符 返回值 方法名(參數){
方法體
}
2.如果在同一類中,那麼方法A調用方法B,直接通過方法名就可以調用。
如果在類A中,想要調用類B中的方法say(),那麼需要先創建出類B的對象,然後調用。
2.局部變數和成員變數
作用域不同
局部變數的作用域僅限於定義它的方法
成員變數的作用域在整個類內部都是可見的
初始值不同
Java會給成員變數一個初始值
Java不會給局部變數賦予初始值
3.JavaDOC
講解要點:JavaDoc能夠從源代碼中抽取類、屬性、方法等的註釋,形成一個配套的API幫助文檔。使用Eclipse生成JavaDoc文檔註釋有兩種方法:
1.使用命令行方式生成
javadoc -d doc -subpackages mine
參數 說明
-d 指定API文檔的輸出目錄,預設是當前目錄。建議總是指定該參數。
-sourcepath 指定源代碼路徑,預設是當前目錄。 此參數通常是必須的。
-subpackages 以遞歸的方式處理各子包。關鍵參數!如果不使用本參數,每次只能處理一個子包(或需手工列出所有子包)。
再加上-author才輸出對應的作者信息
註:以上示例要求 javadoc.exe 所在路徑位於系統環境變數“PATH”中。
支付寶:介面
支付寶做方法定義 的
二流的公司,做方法調用
作業環節
01.第十四章和第15章預習
02.課後作業題
03.日記
04.Blog文章,下次聽寫帶返回值的方法
第十三章 人機猜拳系統
回到頂部第十三章 人機猜拳系統
1.項目概述
由於這是大家第一次接觸項目,希望每個人都能做到問心無愧。認真,仔細的對待這次項目。還有,希望大家能將每一次課後作業和上機練習都看做是在做一個項目 。
2.項目參與者圖解分析
3.人機猜拳運行效果圖
4.思路分析:
1.寫一個電腦類(Computer)
要點:屬性
01.電腦昵稱 name
02.電腦得分 score
方法
01.機器出拳 showFist()
關鍵點:
01.生成1到3的隨機數
方法一:int result=(int)(Math.random()*10)%3+1;
方法二:引入Random類
import java.util.Random;
Random random=new Random();
int ran=random.nextInt(3)+1;
02.用switch判斷生成的隨機數
如果為1:剪刀
如果為2:石頭
如果為3:布
default:未知錯誤
這裡不用考慮輸入其他數字的情況,
因為數字不是用戶輸入的,而是
通過隨機數生成的,只能是1,2,3
03.最後需要將選擇的值返回
2.寫一個玩家類(Person)
要點:同上
但是要註意一點:此時switch中是用戶輸入的值,要做
對應的處理,如果用戶輸入錯誤,
讓用戶迴圈輸入
3.寫一個裁判類
要點:01. Person person;//用戶
Computer computer;//電腦
int count;//對戰次數
//對值進行初始化
public void initial(){
person=new Person();
computer=new Computer();
count=0;
}
02.繪製游戲菜單
001.先調用初始化方法initial
002.然後繪製菜單
System.out.println("---------歡迎進入微冷的雨猜拳系統---------");
System.out.println("\n\t\t******************");
System.out.println("\n\t\t***游戲開始了 ********");
System.out.println("\n\t\t******************");
System.out.println("出拳規則:1.剪刀2.石頭3.布");
//選擇對方角色
System.out.print("\n請選擇對方角色(1.劉德華2.周星星3.鞏俐):");
Scanner input=new Scanner(System.in);
int role=input.nextInt();
003.保存用戶選擇的角色,賦值給computer類的name屬性
004.分別調用機器和玩家的出拳方法,然後對出拳結果比較,
005.顯示比賽結果(之前先要計算比賽結果)
4.調用裁判類輸出結果
第十四章 帶參方法
回到頂部第十四章 帶參方法
00.帶參方法的語法
public int say(String name){
}
01.調用帶參方法時,有哪些註意事項?
解析:實參類型,數量,順序必須與形參(方法定義中的參數)一致。
Public class Student{
Public void say(String name ,int age){
}
}
Public class MyMain(){
Pulbic static void main(String[] args){
Student stu=new Student();
Stu.say(“李小龍”,20);
}
}
02.包的作用是什麼?
解析:為了避免命名衝突,為了更好組織類,方便查找。
包的用途:1.方便管理
2.快速檢索
3.避免衝突
03.帶參方法案例
//單行註釋Ctrl+/ 多行註釋:Ctrl+Shift+/ 取消多行註釋:Ctrl+Shift+\
添加學生 :帶一個參數的方法
顯示學生信息 無參
按區間查詢學生信息 3個參數()
修改學生信息 2個參數(String oldName,String newName)
數組作為參數
對象(自定義類型作為參數)
Null是不能調用它的任何屬性和方法的
包
如果包a中有一個類Student,想要在包b中使用Student類,必須加上導包語句
Import a.Student;
第十五章 字元串
回到頂部第十五章 字元串
01.如何定義一個字元串?
解析:String name="張靚穎";
String name2=new String("鞏俐");
02.字元串常用方法
01.length():返回一個字元串中的字元總個數
案例:
String word="我愛北京天安門, 我愛中國毛爺爺";
//統計word中的字元總個數
System.out.println("長度是"+word.length());
02.equals():判定兩個字元串存儲的內容是否一致,如果相同,返回true。
String name="001";
String name2="001";
if (name.equals(name2)) {
System.out.println("equals");
}else {
System.out.println("不相等");
}
//輸出equals
03.equalsIgnoreCase():忽略大小寫。
Scanner input = new Scanner(System.in);
while(true){
System.out.print("請輸入用戶名:");
String name = input.next();
System.out.print("密碼:");
String mima = input.next();
if(name.equalsIgnoreCase("Tom")&&mima.equals("1234")){
System.out.println("登陸成功");
}else{
System.out.println("登錄失敗");
}
}
04.toLowerCase():將一個字元串全部轉換成小寫。
05.toUpperCase():將一個字元串全部轉化成大寫。
06.name.conCat(String str):
作用:將str拼接到name變數上,形成一個大字元串返回。
String wordLeft="今天看到很多人都倒下了";
String wordRight="死很容易,活著很難";
String result=wordLeft+wordRight;
//方式二:
String result2=wordLeft.concat(wordRight);
System.out.println(result2);
07.substring(int beginIndex)
參數:從第幾個位置開始截取,從0開始數,一直街取到字元串結束
返回值:截取後的內容
案例:
String name=”中國是一個偉大的國家”;
String result=name.substring(8);
Substring(int beginIndex,int endIndex)
參數一:從字元串的第幾個位置開始截取,從0開始數
參數二:截取到第幾個位置結束 ,從1開始數
案例 :
String name="中國是一個偉大的國家,我愛你";
//我想得到:”我愛你“ "國家"
String result=name.substring(8,10);
System.out.println(result);
08.indexof(“字元串”)獲取一個特定字元串在大字元串中的位置。
參數:傳入一個字元串
返回值:傳入的字元串在大字元串中的位置。
案例 :
String name=“[email protected]”;
Int index= Name.indexof(”@”);
09.lastIndexof(“要查找的字元串”):返回最後一次出現某個字元串的位置
10.trim():只能移除兩端的空格,中間的空格無法移除
11.Split(“分割符”)
返回的結果是一個字元串數組
如何定義一個StringBuffer類的對象?
StringBuffer sb=new StringBuffer;
System.out.println("歡 迎 使 用 迷 你 DVD 管 理 器");
System.out.println("-------------------------------------");
System.out.println("0. 借出排行榜");
System.out.println("1. 新 增 DVD");
System.out.println("2. 查 看 DVD");
System.out.println("3. 刪 除 DVD");
System.out.println("4. 借 出 DVD");
System.out.println("5. 歸 還 DVD");
System.out.println("6. 退 出 ");
System.out.print("--------------------------------------\n");
System.out.print("請選擇: ");
Scanner input = new Scanner(System.in);