(一)switch語句
注意事項:
1.switch語句只能用byte、short、 char、 int ,從jdk7.0開始可以用字符串類型。
2.case語句後面只能跟常量,不能跟變量、表達式。
3.switch語句的停止條件:選項匹配之後只有遇到break或者結束switch的大括號纔會結束執行,否則會按代碼順序執行,且不會再判斷選項是否匹配。
4.不管代碼順序如何,匹配時優先判斷case,最後判斷default。
(二)死循環寫法
for( ; ; ) 、while(true)
(三)while
while(false){},在編譯時會報錯,因爲java編譯器中不允許有根本不能執行的代碼出現。
但是boolean flag=false,while(flag){},編譯時不會報錯,因爲編譯時只會識別出flag是boolean類型,但不知道flag變量具體的值,所以編譯會通過,但是執行時該代碼段依然不會執行。
(四)題目舉例
1、數字遊戲
規則:
1.產生一個1-10之間的隨機數
2.接受鍵盤錄入一個數字,判斷錄入的數字是否與隨機數相等
3.最多隻能猜三次
產生隨機數的步驟:
1.創建一個隨機數對象 Random
2.調用隨機數對象的nextInt()方法即可產生一個隨機數
3.導包 import java.util.*;
接受鍵盤錄入數字的步驟:
1.創建一個掃描器 Scanner
2.調用掃描器的方法nextInt(),掃描數據,鍵盤錄入數據默認爲字符串,nextInt()將字符串強制轉換爲int。
3.導包 import java.util.*;
代碼如下:
import java.util.*;
class work3
{
public static void main(String[] args)
{
//創建一個隨機數對象
Random random=new Random();
//調用隨機數對象的nextInt()方法即可產生一個隨機數
int num=random.nextInt(11);//0-n-1
//System.out.println("隨機數是:"+num);
//接受鍵盤錄入
//創建一個掃描器
Scanner scanner=new Scanner(System.in);
//調用掃描器的方法,掃描數據
int times=0,flag=0;
while(times<3){
times++;
int guess=scanner.nextInt();//鍵盤錄入數據
if(guess==num)
{
flag=1;
System.out.println("猜對了!!!");
break;
}
else if(guess>num)
System.out.println("猜大了~~~還剩餘"+(3-times)+"次");
else
System.out.println("猜小了~~~還剩餘"+(3-times)+"次");
}
if(flag==0)
System.out.println("很遺憾猜錯了");
}
}
2、用戶登錄
要求:從鍵盤輸入用戶名和密碼,若輸入的用戶名和密碼分別爲root,admin顯示登錄成功,否則顯示用戶名或密碼錯誤。
鍵盤錄入字符串的步驟與錄入數字步驟相同,只是調用的是next()方法。
判斷兩個字符串是否相等時,用str1.equals(str2),不能用==。
==的作用:
1.普通數據類型,用於判斷兩個數據的值是否相等,如int,char,byte等。
2.引用數據類型,用於判斷兩個變量的內存地址是否相等,即是否指向同一個內容,如字符串,數組等。
代碼如下:
import java.util.*;
class work2
{
public static void main(String[] args)
{
//創建掃描器對象
Scanner scanner=new Scanner(System.in);
System.out.println("請輸入您的用戶名");
//調用掃描器的掃描方法,掃描數據
String name=scanner.next();//表示錄入字符串
System.out.println("請輸入您的密碼");
String password=scanner.next();
if("root".equals(name) && "admin".equals(password))
System.out.println("登錄成功!");
if(!"root".equals(name))
System.out.println("用戶名錯誤");
if(!"admin".equals(password))
System.out.println("密碼錯誤");
//System.out.println("abc".equals(line));//字符串是引用數據類型,==用於引用數據類型,比較的是內存地址,即字符串的首地址
}
}
3、break關鍵字默認是作用於當前層循環,能否使其作用於其他循環?(continue方法類似)
通過和標籤一起使用,標籤的使用規則:
1.標籤的命名和標識符的命名規則一樣。
2.若可能因爲代碼無法執行導致編譯不通過,則最好不用標籤。
class if1
{
public static void main(String[] args)
{
outer:for(int i=0;i<2;i++){
inner:for(int j=0;j<3;j++){
System.out.println("Hello World!");
break outer;
}
}
}
}