1. 程式人生 > 其它 >Java流程控制02

Java流程控制02

04迴圈結構

while迴圈

  • while迴圈是最基本的迴圈表示式

*只要布林表示式為true,迴圈將會一直進行下去

*我們大多數情況是會讓迴圈停止下來的,我們需要一個讓表示式失效的方式來結束迴圈

*少部分情況需一直執行

*迴圈條件一直為true會造成死迴圈

public class WhileDay1 {
public static void main(String[] args) {
//輸出1~100
int i=0;
while(i<100){
i++;
System.out.println(i);
}
}
}
public class WhileDay2 {
public static void main(String[] args) {
while(true){
//等待客戶端連線
//定時檢查
//...
}
}
}
public class WhileDay3 {
public static void main(String[] args) {
//計算1+2+3+……+100=?
int i=0;
int sum=0;
while(i<=100){
sum=sum+i;
i++;
}
System.out.println(sum);
}
}

do...while迴圈

  • 對於while語句而言,不滿足條件,則不能進入迴圈。但有時候我們需要即使不滿足條件,也至少執行一次

  • do while迴圈和while迴圈相似,do while迴圈至少執行一次

public class DoWhileDay1 {
public static void main(String[] args) {
int i=0;
int sum=0;
do{
sum=sum+i;
i++;
}while(i<=100);
System.out.println(sum);
}
}

while 和do while 區別

*while先判斷後執行,do while先執行後判斷

public class DoWhileDay2 {
public static void main(String[] args) {
int a=0;
while(a<0){
System.out.println(a);
a++;
}
System.out.println("===============");
do{
System.out.println(a);
a++;
}while(a<0);

}
}

for迴圈

  • 雖然所有迴圈結構都可以用while或 do while 表示,但Java提供了另一種語句for迴圈

  • for迴圈是支援迭代的一種通用結構,是最有效、最靈活的迴圈結構

  • 關於for迴圈的注意點: 最先執行初始化步驟,可以宣告一種型別,但可初始化一個或多個迴圈變數,也可以是空語句 然後,檢測布林表示式的值,如果表示式為true,迴圈體被執行,如果為false,迴圈終止 開始執行迴圈體後的語句 執行一次迴圈後,更新迴圈控制變數(迭代因子控制迴圈變數的增減) 再次檢測布林表示式,執行上面的過程

public class ForDay1 {
public static void main(String[] args) {
int a=1;//初始化條件
while(a<=100){//條件判斷
System.out.println(a);//迴圈體
a+=2;//a=a+2迭代
}
System.out.println("while迴圈結束");
//初始化值;條件判斷;迭代
for(int i=1;i<=100;i++){
System.out.println(i);
}
System.out.println("for迴圈結束");
}
}
for(;;){
//死迴圈
}
public class ForDay2 {
public static void main(String[] args) {
//練習1:計算0到100之間的奇數和偶數的和
int oddSum=0;//奇數
int evenSum=0;//偶數
for (int i = 1; i <= 100; i++) {
if(i%2!=0){
oddSum+=i;
}else{
evenSum+=i;
}
}
System.out.println("奇數的和"+oddSum);
System.out.println("偶數的和"+evenSum);
}
}
public class ForDay3 {
public static void main(String[] args) {
//用while或for迴圈輸出1~1000之間能被5整除的數,並且每行輸出三個
System.out.println("用for迴圈進行輸入");
for (int i = 0; i <=1000; i++) {
if(i%5==0){
System.out.print(i+"\t");
}
if(i%(5*3)==0){
System.out.println();
//System.out.print("\n");
}
//println輸出完會換行
//print 輸出後不會換行
}
System.out.println("用while迴圈進行輸入");
int i=0;
while(i<=1000){
if(i%5==0){
System.out.print(i+"\t");
}
if(i%(5*3)==0){
System.out.print("\n");
}
i++;
}
}
}

九九乘法表

public class ForDay4 {
public static void main(String[] args) {
//九九乘法表
//1.列印第一列
//2.我們把固定的1再用一個迴圈包起來
//3.去掉重複項,i<=j
//4.調整樣式
for (int j = 1; j <= 9; j++) {
for (int i = 1; i <= j; i++) {
System.out.print(j + "*" + i + "=" + (j * i)+"\t");
}
System.out.println("\n");
}
}
}

增強for迴圈

用於數字或集合的增強for迴圈

public class ForDay5 {
public static void main(String[] args) {
int[] numbers = {10,20,30,40,50};//定義了一個數組
for(int i=0;i<5;i++){
System.out.println(numbers[i]);
}
System.out.println("===================");
//遍歷陣列的元素
for(int x:numbers){
System.out.println(x);
}
}

}

break,continue和goto

break用於強行退出語句塊

continue用於終止某次迴圈

  • break在任何迴圈語句中的主體部分,均可用break控制迴圈的流程

  • break用於強行退出迴圈,不執行迴圈中的剩餘語句(break語句也在switch中使用)

  • continue語句用在迴圈語句體中,用於終止某次迴圈過程,即跳過迴圈中尚未執行的語句,接著進行下一次是否執行迴圈的判定

  • java沒有goto,然而,在break和continue這兩個關鍵字上,仍能看到goto的影子。帶標籤的break和continue

  • 標籤是指後面跟一個冒號的識別符號

  • 對於java來說唯一用到標籤的地方是迴圈語句之前

break

public class BreakDay {
public static void main(String[] args) {
int i=0;
while(i<100){
i++;
System.out.println(i);
if(i==30){
break;
}
}
System.out.println("123");
}
}

continue

public class ContinueDay {
public static void main(String[] args) {
int i=0;
while(i<100){
i++;
if(i%10==0){
System.out.println();
continue;
}
System.out.print(i+"\t");
}

}
}

goto

public class GotoDay {
public static void main(String[] args) {
//列印101-150之間所有的質數
//質數是指在大於1的自然數中,除1和它本身以外不再有其他因數的自然數
int count =0;
//不建議使用goto
outer:for (int i = 101; i < 150; i++) {
for (int j=2;j<i/2;j++){
if(i%j==0){
continue outer;
}
}
System.out.print(i+" ");
}
}
}