1.循環(huán)跳轉(zhuǎn)
- break: 是用來終止循環(huán)的, 循環(huán)不再繼續(xù)執(zhí)行.
//案例: 打印10次`HelloWorld`, 當打印第五次的時候, 結(jié)束循環(huán).
public class BreakDemo01 {
public static void main(String[] args) {
System.out.println("start");
//1. 定義for循環(huán), 打印10次HelloWorld
for (int i = 1; i <= 10 ; i++) {
//2.當i等于5的時候, 結(jié)束循環(huán)
if (i == 5)
break;
System.out.println("Hello World! " + i);
}
System.out.println("end");
}
- continue: 用來結(jié)束本次循環(huán), 進行下一次循環(huán)的, 循環(huán)還會繼續(xù)執(zhí)行.
//案例; 打印1~10之間, 所有不是3倍數(shù)的整數(shù).
public class ContinueDemo02 {
public static void main(String[] args) {
System.out.println("start");
//1. 通過for循環(huán), 獲取1 - 10之間所有的整數(shù)
for (int i = 1; i <= 10; i++) {
//2. 判斷該數(shù)字是否是3的倍數(shù).
if (i % 3 == 0)
//3. 如果是, 就結(jié)束本次循環(huán)
continue;
//4. 如果不是, 就打印該數(shù)字的值.
System.out.println(i);
}
System.out.println("end");
}
}
2.循環(huán)嵌套
所謂的循環(huán)嵌套指的是循環(huán)結(jié)構(gòu)中還包裹著循環(huán)結(jié)構(gòu)
, 外邊的循環(huán)結(jié)構(gòu)叫外循環(huán)
, 里邊的循環(huán)結(jié)構(gòu)叫內(nèi)循環(huán)
.
循環(huán)嵌套用的最多的就是for循環(huán)的嵌套, 具體格式如下:
for(初始化條件; 判斷條件; 控制條件) { //外循環(huán), 例如: 5 1 2
for(初始化條件; 判斷條件; 控制條件) { //內(nèi)循環(huán), 例如: 3 1,2,3 1,2,3
//循環(huán)體;
}
}
執(zhí)行流程
1.外循環(huán)執(zhí)行一次, 內(nèi)循環(huán)執(zhí)行一圈.
2.循環(huán)嵌套的總執(zhí)行次數(shù) = 外循環(huán)的次數(shù) * 內(nèi)循環(huán)的次數(shù).
案例:打印2020年1月至2023年12月之間所有的月份, 格式為: XXXX年XX月
//案例: 打印年月
public class ForForDemo04 {
public static void main(String[] args) {
//1. 定義外循環(huán), 控制年份的變化.
for (int i = 2020; i <= 2023 ; i++) { //外循環(huán)執(zhí)行一次, 內(nèi)循環(huán)執(zhí)行一圈.
System.out.println("start");
//變量i的取值: 2021, 2022, 2023
//2. 定義內(nèi)循環(huán), 控制月份的變化.
for (int j = 1; j <= 12 ; j++) {
System.out.print(i + "年" + j + "月\t");
}
System.out.println(); //記得加換行
System.out.println("end\r\n");
}
}
3.帶標號的循環(huán)操作
public class ForForDemo10 {
public static void main(String[] args) {
for (int i = 1; i <= 5; i++) { //外循環(huán), 控制行. i的值: 1,
for (int j = 1; j <= 5 ; j++) { //內(nèi)循環(huán), 控制列. j的值: 1,2,3(整個循環(huán)結(jié)束)
if (j == 3) {
break; //這個break, 是用來結(jié)束哪個循環(huán)呢?
}
System.out.print("*");
}
System.out.println();
}
}
}
上述的代碼, 打印結(jié)果是一個5行2列的矩形星星圖案, 而我的需求是獲取一個1行2列的星星圖案, 這就意味著, 上述代碼中的break, 只要能直接結(jié)束外循環(huán)即可.
實際開發(fā)中, 為了方便我們操作循環(huán)嵌套中的指定循環(huán), 就需要用到帶標號的循環(huán)操作了.
格式
A: for(初始化條件; 判斷條件; 控制條件) { //外循環(huán)
B: for(初始化條件; 判斷條件; 控制條件) { //內(nèi)循環(huán)
循環(huán)體;
}
}
案例一 : break用法
優(yōu)化上述的代碼, 改為打印一個1行2列的星星圖案
public class ForForDemo10 {
public static void main(String[] args) {
A: for (int i = 1; i <= 5; i++) { //外循環(huán), 控制行.
B: for (int j = 1; j <= 5 ; j++) { //內(nèi)循環(huán), 控制列.
if (j == 3) {
break A; //這個break, 是用來結(jié)束哪個循環(huán)呢?
}
System.out.print("*");
}
System.out.println();
}
}
}
案例二: continue用法
打印1~100之間所有的質(zhì)數(shù), 并按照3個一行的形式進行輸出.
public class ForForDemo10 {
public static void main(String[] args) {
//打印1~100之間所有的質(zhì)數(shù), 并按照3個一行的形式進行輸出.
//定義變量, 用來記錄1-100之間的 質(zhì)數(shù)個數(shù).
int count = 0;
//定義變量, 用來記錄一行打印幾個數(shù).
int flag = 3;
a: for (int i = 2; i < 100; i++) {
for (int j = 2; j < i ; j++) {
if (i % j == 0) {
//走到這里, 說明i不是質(zhì)數(shù).
continue a;
}
}
System.out.print(i + (++count % flag == 0 ? "\r\n" : "\t"));
}
}
}
4.生成隨機數(shù)
- Random類似Scanner排截,也是Java提供好的API(Application Programming Interface),內(nèi)部提供了產(chǎn)生隨機數(shù)的功能.
1.導入包
import java.util.Random;
2.創(chuàng)建隨機數(shù)Random對象.
Random r = new Random();
3.調(diào)用方法, 產(chǎn)生隨機數(shù)
int num = r.nextInt(10); //小括號中可以傳入任意的正整數(shù)
double num = r.nextDouble(); // [0, 1.0)之間的任意小數(shù)
boolean num = r.nextBoolean(10); // 生成均等的布爾值
r.setSeed()
public void setSeed(long seed)
該方法的作用是重新設(shè)置Random對象中的種子數(shù)辐益。
設(shè)置完種子數(shù)以后的Random對象和相同種子數(shù)使用
new關(guān)鍵字創(chuàng)建出的Random對象相同断傲。
隨機種子案例:
public class RandomDemo08 {
public static void main(String[] args) {
Random random = new Random(666);
// Random random = new Random(666);
random.setSeed(666);
for (int i = 0; i <10 ; i++) {
System.out.print(" " + random.nextInt(100));
}
}
}
解釋:
1.小括號中寫的整數(shù)是生成的隨機數(shù)的上限.
2.例如: 小括號中寫10 , 說明生成0~10之間的隨機數(shù), 包含0, 但是不包含10, 即: 包左不包右.
3.小括號中必須傳入正整數(shù), 否則會報IllegalArgumentException(非法參數(shù)異常)
.
數(shù)組的定義
方式一
- 格式一:
數(shù)組存儲的數(shù)據(jù)類型[] 數(shù)組名字;
String[] str;
- 方式二
格式:
數(shù)組存儲的數(shù)據(jù)類型 數(shù)組名字[];
String str2[];
數(shù)組的動態(tài)初始化
- 格式:
數(shù)組存儲的數(shù)據(jù)類型[] 數(shù)組名字 = new 數(shù)組存儲的數(shù)據(jù)類型[長度];
int[] arr = new int[5];
注意:數(shù)組有定長特性,長度一旦指定智政,不可更改认罩。
數(shù)組的靜態(tài)初始化
//標準格式:
數(shù)組存儲的數(shù)據(jù)類型[] 數(shù)組名字 = new 數(shù)組存儲的數(shù)據(jù)類型[]{值1,值2续捂,值3垦垂,}
int[] arr2 = new int[]{1,3,5,7,9};
//簡寫形式:
數(shù)據(jù)類型[] 數(shù)組名 = {元素1,元素2,元素3...};
int[] arr3 = {1, 4, 6, 8};
數(shù)組的訪問
格式:
數(shù)組名[索引]
System.out.println(arr[2]);
- 長度屬性, 數(shù)組名.length 表示數(shù)組中元素的個數(shù);
- 數(shù)組的最大索引值為數(shù)組名.length-1;
索引訪問數(shù)組中的元素:
- 數(shù)組名[索引]=數(shù)值牙瓢,為數(shù)組中的元素賦值
- 變量=數(shù)組名[索引]乔外,獲取出數(shù)組中的元素
public static void main(String[] args) {
//定義存儲int類型數(shù)組,賦值元素1一罩,2杨幼,3,4聂渊,5
int[] arr = {1,2,3,4,5};
//為0索引元素賦值為6
arr[0] = 6;
//獲取數(shù)組0索引上的元素
int i = arr[0];
System.out.println(i);
//直接輸出數(shù)組0索引元素
System.out.println(arr[0]);
//數(shù)組的遍歷差购,一個一個取出來
for (int i = 0; i < arr.length ; i++) {
System.out.println(arr[i]);
}