從結構化程序設計角度出發,程序有三種結構:
順序結構:
JAVA的基本結構就是順序結構,除非特別指明,否則就按照順序一句一句執行順序結構是最簡單的算法結構,語句與語句之間,框與框之間是按從上到下的順序進行的,它是由若干個依次執行的處理步驟組成的,它是任何一個算法都離不開的一種基本算法結構。順序結構在程序流程圖中的體現就是用流程線將程序框自上而地連接起來,按順序執行算法步驟。
選擇結構:
if(條件表達式){
語句;
}
意義:if語句對條件表達式進行一次測試,若測試為真,則執行下面的語句,否則跳過該語句
條件表達式必須是布爾表達式
示例:
View Code
if-else雙選擇結構:如果條件為true執行一個操作,為false執行另一個操作:
流程圖:
示例:
View Code
If-elseif-else多選擇結構:
if(布爾表達式1) {
語句塊1;
} else if(布爾表達式2) {
語句塊2;
}………
else if(布爾表達式n){
語句塊n;
} else {
語句塊n+1;
}
逐條對if語句進行判斷,條件匹配,進入語句體不再進行判斷,否則對if語句繼續判斷匹配
View Code
switch多選擇結構
根據表達式值的不同執行許多不同的操作
Switch語句:case標簽必須是整數或者枚舉,不能是字符串。
switch (表達式) {
case 值1:
語句序列;
[break];
case 值2:
語句序列;
[break];
… … … … …
[default:
默認語句;]
}
switch語句會根據表達式的值從相匹配的case標簽處開始執行,一直執行到break語句處或者是switch語句的末尾
與任一case值不匹配,則進入default語句(如果有的話)
View Code
根據輸入的月份,打出該月份的天數(不需要考慮潤年、閏月)
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();
}
}
}
while和do...while
-
對於while語句而言,如果不滿足條件,則不能進入循環。但有時候我們需要即使不滿足條件,也至少執行一次。
-
do...while循環和while循環相似,不同的是,do...while循環至少會執行一次。
while和do...while的區別:
-
while先判斷后執行。do...while是先執行后判斷!
-
Do...while總是保證循環體會被至少執行一次!這也是他們的主要區別。
package com;
public class whileDemo01 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int i = 0;
while(i<0){
System.out.println(i);
i++;
}
System.out.println("=========================");
do{
System.out.println(i);
i++;
}while(i<0);
}
}
=================