鍵盤錄入
1.為什麼要使用鍵盤錄入資料
a:為了讓程式的資料更符合開發的資料;
b:讓程式更靈活一下;
2.鍵盤錄入的基本格式
a:導包
格式:
import java.util.Scanner;
位置:
在class上面。
b:建立鍵盤錄入對象
格式:
Scanner sc = new Scanner(System.in);
c:通過對象擷取資料
格式:
int x = sc.nextInt();
輸入時注意從等号右邊開始輸,使用ALT+Enter鍵可補全代碼。
流程控制語句
1.什麼是流程控制語句
在一個程式執行的過程中,各條語句的執行順序對程式的結果是有直接影響的。我們必須清楚每條語句的執行流程。而且,很多時候我們要通過控制語句的執行順序來實作我們要完成的功能。
2.流程控制語句
1) 順序結構:是程式中最簡單最基本的流程控制,沒有特定的文法結構,按照代碼的先後順序,依次執行。從上往下,依次執行。
2)選擇結構:也被稱為分支結構。選擇結構有特定的文法規則,代碼要執行具體的邏輯運算進行判斷,邏輯運算的結果有兩個,是以産生選擇,按照不同的選擇執行不同的代碼。
分類:if語句
switch語句
if語句的格式1
if(比較表達式或者是boolean類型的值) {
語句體;
}
執行流程:
先計算比較表達式的值,看其傳回值是true還是false。
如果是true,就執行語句體;
如果是false,就不執行語句體;
if語句的格式2
if(比較表達式) {
語句體1;
}else {
語句體2;
}
執行流程:
首先計算比較表達式的值,看其傳回值是true還是false。
如果是true,就執行語句體1;
如果是false,就執行語句體2;
if語句的格式3:
if(比較表達式1) {
語句體1;
}else if(比較表達式2) {
語句體2;
}else if(比較表達式3) {
語句體3;
}
...
else {
語句體n+1;
}
執行流程:
首先計算比較表達式1看其傳回值是true還是false,
如果是true,就執行語句體1,if語句結束。
如果是false,接着計算比較表達式2看其傳回值是true還是false,
如果是true,就執行語句體2,if語句結束。
如果是false,接着計算比較表達式3看其傳回值是true還是false,
…
如果都是false,就執行語句體n+1。
注意事項: 當隻要有一個條件滿足時,if語句結束。else是可以省略,但是不建議省略。
什麼時候if語句實作不能用三元改進?
當if語句控制的操作是一個輸出語句的時候就不能。
為什麼呢?因為三元運算符是一個運算符,運算符操作完畢就應該有一個結果,而不是一個輸出。
switch語句的格式
switch(表達式){
case 值1:
語句體1;
break;
case 值2:
語句體2;
break;
case 值3:
語句體3;
break;
....
default:
語句體n+1;
break;
}
執行流程:
先計算表達式的值
然後和case後面的比對,如果比對成功就執行對應的語句,遇到break就會結束,否則執行default控制的語句。
switch語句的一些特點:
1.switch語句所支援的資料類型,byte short int char JDK1.5之後支援枚舉類型 JDK1.7之 後支援字元串類型;
2.case 後面的隻能是常量;
3.default 可以寫也可以不寫 位置放在前後都行,他是所有case項都沒有比對上就會執行;
4.break 結束整個switch語句 break 如果說你忘了寫,會發生一個現象 case穿透,這種現象你可以利用;
在做判斷的時候,我們有兩種選擇,if語句和switch語句,那麼,我們到底該如何選擇使用那種語句呢?
if語句使用場景:
針對結果是boolean類型的判斷
針對一個範圍的判斷
針對幾個常量值的判斷
switch語句使用場景:
針對幾個常量值的判斷
3)循環結構:循環語句可以在滿足循環條件的情況下,反複執行某一段代碼,這段被重複執行的代碼被稱為循環體語句,當反複執行這個循環體時,需要在合适的時候把循環判斷條件修改為false,進而結束循環,否則循環将一直執行下去,形成死循環。
循環結構的分類:for循環、 while循環
for語句的格式:
for(初始化表達式語句;判斷條件語句;控制條件語句) {
循環體語句;
}
執行流程:
a:執行初始化表達式語句
b:執行判斷條件語句,看其傳回值是true還是false
如果是true,就繼續執行
如果是false,就結束循環
c:執行循環體語句;
d:執行控制條件語句
e:回到B繼續。
初始化表達式語句隻執行一次。
while循環的基本格式:
初始化條件語句;
while(判斷條件語句) {
循環體語句;
控制條件語句;
}
執行流程:
a:執行初始化條件語句;
b:執行判斷條件語句,看其傳回值是true還是false
如果是true,就繼續執行
如果是false,就結束循環
c:執行循環體語句;
d:執行控制條件語句
e:回到b繼續。
do...while語句的格式:
初始化條件語句;
do {
循環體語句;
控制條件語句;
}while(判斷條件語句);
執行流程:
a:執行初始化條件語句;
b:執行循環體語句;
c:執行控制條件語句;
d:執行判斷條件語句,看其傳回值是true還是false
如果是true,就繼續執行
如果是false,就結束循環
e:回到b繼續。
三種循環語句的差別:
(1):do…while循環至少執行一次循環體。
for,while循環必須先判斷條件是否成立,然後決定是否執行循環體語句。
(2): 如果你想在循環結束後,繼續使用控制條件的那個變量,用while循環,否則用for循環。用for循環。因為變量及早的從記憶體中消失,可以提高記憶體的使用效率。
建議優先考慮for循環,然後是while循環 ,最後是do…while循環
控制跳轉語句
break 中斷: 退出單層循環
continue 繼續:跳出一次循環,執行下一步操作。
return 傳回 :退出一個方法,跳轉到上層調用的方法。
break: 結束單層循環;
continue: 結束目前循環,執行下一次循環;
return: 結束目前方法;
方法
1.為什麼要有方法?
為了解決代碼重複編寫的問題。
2.什麼是方法
方法就是完成特定功能的代碼塊。
方法的格式
修飾符 傳回值類型 方法名(參數類型 參數名1,參數類型 參數名2 ....){
方法體;
return 傳回值;
}
(1): 修飾符 比較多,後面會詳細介紹。目前使用 public static
(2): 傳回值類型 用于限定傳回值的資料類型
(3): 方法名 就是一個名稱,它的存在是為了友善我們調用方法
(4): 參數類型 限定調用方法時傳入參數的資料類型
(5): 參數名 是一個變量,接收調用方法時傳入的參數。
這個參數其實有一個專業的名詞,被稱之為形式參數,它的作用是用來接收實際參數的.
(6): 方法體 完成功能的代碼
(7): return 結束方法以及傳回方法指定類型的值
(8): 傳回值 就是功能的結果,由return帶回,帶回給調用者
如何寫一個方法:
(1):傳回值類型 明确功能結果的資料類型;
(2):參數清單 你要傳遞幾個參數,以及每一個參數的資料類型;
方法的注意事項:
1.方法不調用不執行;
2.方法與方法是平級關系,不能嵌套定義;
3. 方法定義的時候參數之間用逗号隔開;
4. 方法調用的時候不用在傳遞資料類型;
5.如果方法有明确的傳回值,一定要由return帶回一個值;
方法重載
在同一個類中,允許存在一個以上的同名方法,隻要它們的參數清單不同,與傳回值無關。
參數清單不同:
1)參數個數不同;
2)參數類型不同;
以下是一些案例:
package demo;
import java.util.Scanner;
import static sun.plugin.util.ProgressMonitor.get;
public class demo8 {
public static void main(String[] args) {
// 案例示範:
// 需求:根據鍵盤錄入的資料輸出對應的乘法表;
Scanner sc=new Scanner(System.in);
System.out.println("請輸入數字:");
int n=sc.nextInt(); //鍵盤錄入
getChenfabiao(n); //在主方法中調用該方法
}
private static void getChenfabiao(int a) {
for(int i=1;i<=a;i++){
for(int j=1;j<=i;j++){
System.out.print(j+"*"+i+"="+(j*i)+"\t");
}
System.out.println();
}
}
}
package demo;
import java.util.Scanner;
public class demo9 {
public static void main(String[] args) {
//按照輸入得行數和列數,列印相應得“*”;
Scanner sc=new Scanner(System.in);
System.out.println("請輸入行數:");
int x = sc.nextInt();
System.out.println("請輸入列數:");
int y = sc.nextInt();
showStar(x,y);
}
private static void showStar(int x, int y) {
for(int i=0;i<x;i++){
for(int j=0;j<y;j++){
System.out.print("*");
}
System.out.println();
}
}
}