當(dāng)循環(huán)次數(shù)或范圍確定時,多用for循環(huán),反之多用while循環(huán)
循環(huán)結(jié)構(gòu)一般由四部分組成:
- 初始化語句,在循環(huán)開始最初執(zhí)行,并且只執(zhí)行一次
- 條件判斷、步進語句、循環(huán)體
for & foreach
for循環(huán),循環(huán)體可以執(zhí)行零次或多次
每執(zhí)行一次循環(huán)體,就會執(zhí)行一次步進語句
int i;
for (i = 0; i < 5; i++) {
continue; // 跳出當(dāng)前次循環(huán)
// System.out.println(i); // 標(biāo)紅報錯 Unreachable statement 不能執(zhí)行到的語句
}
System.out.println(i); // 5
foreach循環(huán),JDK 5 新特性,遍歷數(shù)組和集合,底層是迭代器
for(聲明循環(huán)變量:數(shù)組名字){ },不可以使用已經(jīng)聲明過的變量
int one[] = {1, 2, 50, 61};
for (int i : one) {
System.out.println(i);
}
// int j = 0;
// for ( j : one) { } // 標(biāo)紅報錯 Not a statement
int two[][] = {{1}, {1, 2}, {1, 2, 3}};
for (int i = 0; i < two.length; i++) { // 傳統(tǒng)方式遍歷二維數(shù)組
for (int j = 0; j < two[i].length; j++) {
System.out.println(two[i][j]);
}
}
System.out.println("==========");
for (int[] ints : two) { // 改進方式遍歷二維數(shù)組
for (int anInt : ints) {
System.out.println(anInt);
}
}
遍歷數(shù)組,foreach循環(huán)比for循環(huán)更加快捷
for循環(huán)可以修改數(shù)組元素,foreach循環(huán)不能修改數(shù)組元素
int[] arr = {1, 2, 3};
for (int i : arr) {
i += 1;
}
System.out.println(Arrays.toString(arr)); // [1, 2, 3]
for (int i = 0; i < arr.length; i++) {
arr[i] += 1;
}
System.out.println(Arrays.toString(arr)); // [2, 3, 4]
一、求1-100之間偶數(shù)的和
int sum = 0;
for (int i = 1; i <= 100; i1++) {
if (i1 % 2 == 0) {
sum += i;
}
}
// for (int i = 2; i <= 100; i += 2) { // 步進語句,每次加二
// sum += i;
// }
System.out.println("1-100之間偶數(shù)的和:" + sum); // 2550
二、求1-100之間素數(shù)的和
int sum = 0;
for (int i = 1; i <= 100; i++) { // 目標(biāo)數(shù)
int j;
for (j = 2; j < i; j++) { // 素數(shù)只能被1和本身整除,在2~(i-1)范圍內(nèi)遍歷
if (i % j == 0) {
break;
}
}
if (i == 1 || j < i) { // 最小的素數(shù)是2,排除目標(biāo)數(shù)1;j<i不是素數(shù),繼續(xù)下一個目標(biāo)數(shù)
continue;
}
sum += i;
}
System.out.println(sum); // 1060
三、求6+66+666…的前12項和
int sum = 0;
int item = 6;
for (int i = 1; i <= 2; i++) { // 檢驗循環(huán),縮小次數(shù)
sum += item;
item = item * 10 + item; // 修改中間量
}
System.out.println(sum); // 72
四、求1-1000之內(nèi)的所有完數(shù)
一個數(shù)恰好等于它的因子之和,這個數(shù)稱為完數(shù)
for (int i = 1; i <= 1000; i++) { // 目標(biāo)數(shù)
int sum = 0;
for (int j = 1; j < i; j++) { // 因子,不包含本身
if (i % j == 0) {
sum += j;
}
}
if (i == sum) {
System.out.println(i); // 6 28 496
}
}
五、打印一天之內(nèi)的幾點幾分
// 嵌套循環(huán)
for (int i = 0; i < 24; i++) { // 24小時
for (int j = 0; j < 60; j++) { // 60分鐘
System.out.println(i + "點" + j + "分"); // 24*60=1440行
}
}
while & do-while
while循環(huán),循環(huán)體可以執(zhí)行零次或多次
do-while循環(huán),循環(huán)體至少執(zhí)行一次,不要漏掉末尾的分號!!
int i = 1; // 初始化語句
do {
System.out.println("hello world " + i); // 循環(huán)體
i++; // 步進語句
} while (i < 0); // 條件判斷
一、求1!+1/2!+1/3!+…的前12項和
double sum = 0; // double類型
double item = 1;
int index = 1, end = 2; // 檢驗循環(huán),縮小次數(shù)
while (index <= end) {
sum += item;
index++;
item = item * 1.0 / index; // 修改中間量
}
System.out.println(sum); // 1.5
二、求1!+2!+3!+4!+…的前12項和文章來源:http://www.zghlxwxcb.cn/news/detail-827810.html
int sum = 0;
int item = 1;
int index = 1, end = 3; // 檢驗循環(huán),縮小次數(shù)
while (index <= end) {
sum += item;
index++;
item = item * index; // 修改中間量
}
System.out.println(sum); // 1 + 2 + 6 = 9
三、求滿足1+2+3+…+n<8888的最大正整數(shù)n文章來源地址http://www.zghlxwxcb.cn/news/detail-827810.html
// 0<8888 +1<8888 +2 +3 +4
// sum: +1 +2 +3 +4
// item: 2 3 4 5
int sum = 0;
int item = 1;
while (sum < 8888) { // 數(shù)字10驗證過程如上,最終需要item-2才正確
sum += item;
item = item + 1;
}
System.out.println(item - 2); // 132
到了這里,關(guān)于循環(huán)結(jié)構(gòu)(含練習(xí)題)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!