break關鍵字html
使用場合:代理
適用於switch選擇結構。htm
適用於for、while和do…while循環結構。字符串
break的做用:get
若是用於switch選擇結構,那麼做用就是跳出switch選擇結構,執行switch選擇結構以後的代碼。input
若是用於循環結構,那麼做用就是跳出當前循環,執行循環以後的代碼。it
break練習題for循環
一、 韓信點兵,三人一組餘兩人,五人一組餘三人,七人一組餘四人,請問最少須要多少士兵。變量
/**循環
* 思路分析:
* 由於不明確循環的範圍(條件),因此咱們能夠採用死循環來實現,假設循環變量爲i。
* 循環變量從1開始遞增,每次遞增+1。循環變量就是咱們須要找的士兵人數!
* 當i知足「i % 3 == 2 && i % 5 == 3 && i % 7 == 4」條件,則找到韓信點兵的人數。
* 知足韓信點兵條件,那麼後續循環也沒必須繼續進行,直接跳出循環便可。--> break關鍵字
* 注意:死循環通常和break關鍵字一塊兒使用。
*/
int i = 1;
while(true) {
if(i % 3 == 2 && i % 5 == 3 && i % 7 == 4) {
System.out.println(i);
break;
}
i++;
}
/**
* for循環和while循環總結
* 核心:for循環能作的事情while循環也能實現,while循環能作的事情for循環也能實現。
* while循環的使用場合:
* a)當不明確循環次數的時候,建議使用while死循環。
* --> 好處:語法簡潔、可讀性高
* b)當循環結束以後,還須要使用循環變量的時候,建議使用while循環。
* --> 由於while循環的循環變量就是聲明在循環以外的。
*/
二、 **[難]**輸入一個任意整數,判斷它是否爲質數,若是是質數就輸出「是質數」,不然輸出‘不是質數’。質數:除了1和它自己以外,不能被其餘數整除的正整數稱質數。
實現方案一:假設法
/**
* 步驟分析:
* a)經過Scanner得到一個整數,假設使用變量num來保存該整數。
* b)經過for循環得到[2, num - 1]之間的全部整數,假設循環變量爲i。
* c)判斷num是否爲質數,若是num能別[2, num - 1]之間任意一個數整除,則證實num不是一個質數!
* 1)在判斷num是否爲質數以前,先假設num就是一個質數。
* --> 定義一個標記(flag),而且把標記值設置爲true。
* 2)在判斷num是否爲質數的過程當中,若是num能被[2, num - 1]之間的其中一個數整除,則證實num不是質數!
* --> 推翻假設,設置flag的標記值爲false。
* --> 既然已經肯定num不是一個質數,那麼後續循環也沒必須繼續進行,使用break跳出循環便可!
* 3)判斷num是否爲質數完畢後,檢查flag標記的值,從而肯定num是否爲質數!
* --> 若是flag標記值爲true,則證實假設成立,也就意味着num是一個質數!
* --> 若是flag標記值爲false,則證實假設失敗,也就意味着num不是一個質數!
*/
// 1.經過Scanner得到一個整數
Scanner input = new Scanner(System.in);
System.out.print("請輸入一個正整數:");
int num = input.nextInt();
// 2.經過for循環得到[2, num - 1]之間的全部整數
// a)在判斷num是否爲質數以前,先假設num就是一個質數。
boolean flag = true;
for(int i = 2; i < num; i++) {
// 3.判斷num是否爲質數。
// b)在判斷num是否爲質數的過程當中,若是num能被[2, num - 1]之間的其中一個數整除,則證實num不是質數!
if(num % i == 0) {
// 推翻假設,設置flag的標記值爲false。
flag = false;
// 既然已經肯定num不是一個質數,那麼後續循環也沒必須繼續進行,使用break跳出循環便可!
break;
}
}
// c)判斷num是否爲質數完畢後,檢查flag標記的值,從而肯定num是否爲質數!
if(flag) { // 證實假設成立,也就意味着num是一個質數!
System.out.println(num + "是一個質數");
}
else { // 證實假設失敗,也就意味着num不是一個質數!
System.out.println(num + "不是一個質數");
}
實現方法二:經過分析for循環的執行順序來實現!
/**
* 步驟分析:
* a)經過Scanner得到一個整數,假設使用變量num來保存該整數。
* b)經過for循環得到[2, num - 1]之間的全部整數,假設循環變量爲i。
* c)判斷num是否爲質數,若是num能別[2, num - 1]之間任意一個數整除,則證實num不是一個質數!
* 1)在判斷num是否爲質數的過程當中,若是num能被[2, num - 1]之間的其中一個數整除,則跳出循環。
* 2)判斷num是否爲質數的循環後,判斷循環遍歷i的值,從而肯定num是否爲質數。
*/
// 1.經過Scanner得到一個整數
Scanner input = new Scanner(System.in);
System.out.print("請輸入一個正整數:");
int num = input.nextInt();
// 2.經過for循環得到[2, num - 1]之間的全部整數
int i = 2;
for (; i < num; i++) {
// 3.判斷num是否爲質數。
if(num % i == 0) {
break;
}
}
// 判斷i的值,從而肯定循環是否正常執行完畢
if(i == num) { // 正常執行完畢,永遠沒法知足「num % i == 0」的條件,也就意味着num是一個質數
System.out.println(num + "是一個質數");
}
else { // 循環執行過程當中,知足「num % i == 0」的條件,也就意味着num不是一個質數
System.out.println(num + "不是一個質數");
}
三、**[難]**輸入一個正整數,而後把該正整數轉化爲二進制。
/**
* 思路分析:
* a)得到輸入整數的二進制位
* 核心思路:除以2取餘數,得到餘數反過來就是二進制值。
* 例如:假設輸入的正整數爲20,而且使用num變量來保存。
* 第一趟:int bit = num % 2; num /= 2; --> bit = 0, num = 10;
* 第二趟:int bit = num % 2; num /= 2; --> bit = 0, num = 5;
* 第三趟:int bit = num % 2; num /= 2; --> bit = 1, num = 2;
* 第四趟:int bit = num % 2; num /= 2; --> bit = 0, num = 1;
* 第五趟:int bit = num % 2; num /= 2; --> bit = 1, num = 0;
* 經過以上思路分析,咱們發現每一趟的代碼都是如出一轍,因此咱們使用循環來實現。
* --> 由於不明確循環次數,因此咱們採用死循環來實現。Axitrader代理申請http://www.kaifx.cn/broker/ax...
,while(true) {}
* --> 當num的結果爲0時,就能夠結束死循環。break關鍵字
* b)經過得到的二進制位從而獲得二進制值。
* 核心思路:定義一個字符串,用於保存num的二進制值。
* a)在循環以外,定義一個字符串(bitStr),用於保存num的二進制值
* b)每得到一個二進制位,就把該二進制位插入到bitStr的最前面。
*/
// 1.經過Scanner得到一個正整數
Scanner input = new Scanner(System.in);
System.out.print("請輸入一個正整數:");
int num = input.nextInt();
// 2.得到正整數num的二進制位
// a)在循環以外,定義一個字符串,用於保存num的二進制值
String bitStr = "";
while (true) {
// 得到num的二進制位
int bit = num % 2;
/**
* b)每得到一個二進制位,就把該二進制位插入到bitStr的最前面。
* 第一趟:bit = 0, bitStr = 0 + bitStr; --> bitStr = "0";
* 第二趟:bit = 0, bitStr = 0 + bitStr; --> bitStr = "00";
* 第三趟:bit = 1, bitStr = 1 + bitStr; --> bitStr = "100";
* 第四趟:bit = 0, bitStr = 0 + bitStr; --> bitStr = "0100";
* 第五趟:bit = 1, bitStr = 1 + bitStr; --> bitStr = "10100";
*/
bitStr = bit + bitStr;
// 更新num的值,爲下一趟循環作鋪墊
num /= 2;
// 當num的值爲0時,結束死循環
if (num == 0) {
break;
}
}
System.out.println(bitStr);