從結構化程序設計角度出發,程序有三種結構:
順序結構:
JAVA的基本結構就是順序結構,除非特別指明,否則就按照順序一句一句執行順序結構是最簡單的算法結構,語句與語句之間,框與框之間是按從上到下的順序進行的,它是由若干個依次執行的處理步驟組成的,它是任何一個算法都離不開的一種基本算法結構。順序結構在程序流程圖中的體現就是用流程線將程序框自上而地連接起來,按順序執行算法步驟。
選擇結構:
if(條件表達式){
語句;
}
意義:if語句對條件表達式進行一次測試,若測試為真,則執行下面的語句,否則跳過該語句
條件表達式必須是布爾表達式
示例:

1 import java.util.Scanner; 2 public class TestIf{ 3 public static void main(String[] args){ 4 /* 5 0~18:你還是小屁孩! 6 18~30:你是精力旺盛小青年! 7 30~50:你是處在人生頂峰的老男人! 8 大於50:你已經人老珠黃了! 9 */ 10 Scanner sc = new Scanner(System.in); 11 System.out.println("請輸入你的年齡:"); 12 int age = sc.nextInt(); 13 if(age>0 && age<=18){ 14 System.out.println("你還是小屁孩"); 15 } 16 if(age>18 && age<=30){ 17 System.out.println("你是精力旺盛小青年"); 18 } 19 if(age>30 && age<=50){ 20 System.out.println("你是出於人生巔峰的老男人"); 21 } 22 if(age>50){ 23 System.out.println("你已經日落西山了"); 24 } 25 } 26 }
if-else雙選擇結構:如果條件為true執行一個操作,為false執行另一個操作:
流程圖:
示例:

1 public class IfElse{ 2 public static void main(String[] args){ 3 double r = Math.random()*6; 4 double s = Math.PI*r*r; 5 double c = 2*Math.PI*r; 6 System.out.println("半徑為:" + r); 7 System.out.println("面積為:" + s); 8 System.out.println("周長為:" + c); 9 if(s>=c){ 10 System.out.println("圓的面積大於周長"); 11 }else { 12 System.out.println("圓的周長大於面積"); 13 } 14 } 15 }
If-elseif-else多選擇結構:
if(布爾表達式1) {
語句塊1;
} else if(布爾表達式2) {
語句塊2;
}………
else if(布爾表達式n){
語句塊n;
} else {
語句塊n+1;
}
逐條對if語句進行判斷,條件匹配,進入語句體不再進行判斷,否則對if語句繼續判斷匹配

1 public class TestIfElse3{ 2 public static void main(String[] args){ 3 int age = (int)(Math.random()*100); 4 System.out.println("您的年齡是:" + age + ",屬於:"); 5 if(age<15){ 6 System.out.println("兒童"); 7 }else if(age<35){ 8 System.out.println("青年"); 9 }else if(age<50){ 10 System.out.println("壯年"); 11 }else if(age<85){ 12 System.out.println("老年"); 13 }else { 14 System.out.println("老壽星"); 15 } 16 } 17 }
switch多選擇結構
根據表達式值的不同執行許多不同的操作
Switch語句:case標簽必須是整數或者枚舉,不能是字符串。
switch (表達式) {
case 值1:
語句序列;
[break];
case 值2:
語句序列;
[break];
… … … … …
[default:
默認語句;]
}
switch語句會根據表達式的值從相匹配的case標簽處開始執行,一直執行到break語句處或者是switch語句的末尾
與任一case值不匹配,則進入default語句(如果有的話)

1 import java.util.Scanner; 2 public class SwitchTest1{ 3 public static void main(String[] args){ 4 int number; 5 System.out.println("請撥號:"); 6 Scanner sc = new Scanner(System.in); 7 number = sc.nextInt(); 8 switch(number){ 9 10 case 1: 11 System.out.println("打給爸爸。。。"); 12 break; 13 case 2: 14 System.out.println("打給媽媽。。。"); 15 break; 16 case 3: 17 System.out.println("打給爺爺。。。"); 18 break; 19 case 4: 20 System.out.println("打給奶奶。。。"); 21 break; 22 default: 23 System.out.println("對不起,沒有你要輸入的親情號"); 24 } 25 } 26 }
根據輸入的月份,打出該月份的天數(不需要考慮潤年、閏月)
int month =(int)(1+Math.random()*12); if(month>0&&month<13){ switch (month) { case 2: System.out.println("28天"); break; case 4: case 6: case 9: case 11: System.out.println("30天"); break; default: System.out.println("31天"); } // 31:1,3,5,7,8,10,12 30:4,6,9,11 28:2 }else{ System.out.println ("月份不合法!"); }
循環結構:
while語句格式
while (布爾表達式) {
循環體;
}
在循環剛開始時,會計算一次“布爾表達式”的值,若條件為真,執行循環體。而對於后來每一次額外的循環,都會在開始前重新計算一次。
語句中應有使循環趨向於結束的語句,否則會出現無限循環–––"死"循環。
public class WhileTest { public static void main(String[] args) { int i = 0; int sum = 0; while (i <= 100) { // 1+2+3+…+100=? sum += i; //sum = sum+i; i++; } System.out.println("Sum= " + sum); } }
while語句結構
do{
循環體;
}while(布爾表達式);
先執行循環體,后判斷boolean表達式,循環體至少執行一次,而while循環可能一次都不執行
示例:
1 public static void main(String[] args) { 2 int i=0; 3 int sum = 0; 4 do{ 5 sum +=i; 6 i++; 7 }while(i<=100); 8 System.out.println(sum); 9 }
For循環
For循環語句是支持迭代的一種通用結構,是最有效最靈活的循環結構
語法形式:
for(循環變量初始化; 布爾表達式;循環變量改變語句)
n for循環在第一次反復之前要對循環變量進行初始化。隨后,它會進行條件測試,而且在每一次反復的時候,循環變量進行某種形式的“改變”。
- 初始化部分設置循環變量的初值
- 條件判斷部分為任意布爾表達式
- 迭代因子控制循環變量的增減
public static void main(String[] args){ int sum = 0; for (int i = 0; i <= 100; i++) { sum += i; } System.out.println("Sum= " + sum); }
如何使用循環結構呢?
當不知道執行次數循環次數的時候使用while循環,當至少執行一次的時候使用do...while循環,當有明確循環次數哦的時候使用for循環
一般而言,能用while循環的都可以用for循環解決,而且for循環看着更加整潔大方
break語句和continue語句
在任何循環語句的主體部分,均可用break控制循環的流程。break用於強行退出循環,不執行循環中剩余的語句
public class BreakTest { public static void main(String[] args) { int total = 0; System.out.println("Begin"); while(true) { total++; int i = (int)Math.round(100 * Math.random()); if(i == 88) break; } System.out.println("Game over, used " + total + " times."); } }
當條件滿足時,退出當前循環。不再執行以后的循環
continue 語句用在循環語句體中,用於終止某次循環過程,即跳過循環體中尚未執行的語句,接着進行下一次是否執行循環的判定。
把100~150之間不能被3整除的數輸出:
public class ContinueTest { public static void main(String[] args) { int count = 0; for (int i = 100; i < 150; i++) { if (i % 3 == 0){ continue; } System.out.println(i); } } }
無限循環的第二種形式是for(;;)。編譯器將while(true)與for(;;)看作同一回事。
用循環求九九乘法表:
public class HomeWork1{ //九九乘法表 public static void main(String[] args){ for(int i=1;i<10;i++){ for(int j=1;j<=i;j++){ System.out.print(i+"*"+j+"="+i*j+"\t"); } System.out.println(); } } }