流程控制(Control
Flow)
一般Java程式之執行由main方法最前面依序執行,流程控制敘述則可依條件改變程式執行之流程,或重覆執行某段程式,增加程式之靈活性。
依條件敘述決定程式走向。
條件敘述為真時執行if下之敘述,否則執行else下之敘述。
格式:
if (condition expression)
{true statements; }
[else
{ false statements; }]
[範例]
[1.包含if及else]
class Ifelse1 {
public
static void main (String[] args) {
int tf =
5;
if
(tf>0)
System.out.println("tf>0為真時之敘述式:" + tf); //單行敘述省略{}
else {
tf
= 100;
System.out.println("tf>0為偽時之敘述式:" + tf);
}
}
}
執行結果:C:\js>java
Ifelse1
tf>0為真時之敘述式:5
或是
class Ifelse2 {
public
static void main (String[] args) {
int tf =
0;
if
(tf>0)
{
System.out.println("tf>0為真時之敘述式:" + tf);
} //不省略{}
else {
tf
= 100;
System.out.println("tf>0為偽時之敘述式:" + tf);
}
}
}
執行結果:C:\js>java
Ifelse2
tf>0為偽時之敘述式:100
[2.省略else]
class Ifelse3 {
public
static void main (String[] args) {
int tf =
0;
if
(tf>0)
System.out.println("tf>0為真時之敘述式:" + tf);
System.out.println("tf>0無論真偽皆會執行之敘述式");
//沒必要時可省略else
}
}
執行結果:C:\js>java
Ifelse3
tf>0無論真偽皆會執行之敘述式
<由命令提示字元輸入資料之方法>
主方法之格式:
public
static void main(String[] args) {}
( )中定義命令列輸入資料之型態,即名稱為args之字串(string)型態一維矩陣(陣列),其大小由命令列輸入之資料個數決定。
C:\js>java Score1 70 55 90
Score1:.class檔名稱
輸入3個資料:70 55 90 即args[0]=70、args[1]=55、args[2]=90
相關函式:
args.length:可使用函式args.length取得輸入資料個數。
System.exit(1):可強制結束程式。
Integer.parseInt(args[n]):將第n(從0開始)個輸入資料由字串型態轉為整數型態。
習題:
由指令參數(即由命令提示字元)輸入小明的國文成績,超過及等於60分,在螢幕顯示“小明國文考試xx分及格了”,否則顯示“小明國文考試xx分不及格”,使用if...else敘述。沒有輸入資料分數時,顯示提醒文字並停止程式。
class
ChineseScore1 {
public static void main(String[] args) {
if (args.length < 1) {
System.out.println("請輸入國文分數");
System.exit(1); //結束程式
}
int 國文 =
Integer.parseInt(args[0]);
if (國文
>= 60) {
System.out.println("小明國文考試" + 國文 + "分及格了");
}
else {
System.out.println("小明國文考試" + 國文 + "分不及格");
}
}
}
執行結果:
C:\js>java
ChineseScore1
請輸入國文分數
C:\js>java
ChineseScore1 89
小明國文考試89分及格了
C:\js>java ChineseScore1 59
小明國文考試59分不及格
格式:
if條件式A
if條件式B
敘述甲
else
敘述乙
else
if條件式C
敘述丙
else
敘述丁
合乎條件A並合乎條件B,執行敘述甲
合乎條件A但不合乎條件B,執行敘述乙
不合乎條件A但合乎條件C,執行敘述丙
不合乎條件A且不合乎條件C,執行敘述丁
可使用多層巢狀。
[範例]
|
a
|
b
|
c
|
|
大於100 ( >100 )
|
大於200 ( >200 )
|
甲
|
|
小於等於200 ( <=200)
|
乙
|
|
|
小於等於100 ( <=100)
|
大於200 ( >200 )
|
丙
|
|
小於等於200 ( <=200)
|
丁
|
class Ifelse5 {
public
static void main (String[] args) {
int a =
105;
int b =
190;
char c;
if (a>100)
if(b>200)
{c='甲';}
else
{c='乙';}
else
if (b>200)
{c='丙';}
else
{c='丁';}
System.out.println("a="+a+" b="+b+" c="+c);
}
}
執行結果:C:\js>java
Ifelse5
a=105 b=190
c=乙
格式:
if
(expression_1)
statement_1;
else if
(expression_2)
statement_2;
else if (expression_3)
statement_3;
else
statement_4;
[範例]
class Elseif1
{
public static void main (String[] args) {
int xy
= 3;
if (xy == 1)
System.out.println("xy值為1");
else if (xy == 2)
System.out.println("xy值為2");
else if (xy == 3)
System.out.println("xy值為3");
else
System.out.println("xy為其他值");
}
}
執行結果:C:\js>java Elseif1
xy值為3
依switch內敘述之值決定程式執行之敘述,皆不符合時執行default之敘述。
格式:
switch
(expression){
case expression_value_1:
statements_1;
break;
case expression_value_2:
statements_2;
break;
case expression_value_3:
statements_3;
break;
...........................................
default:
statements_4;
[範例]
class Case1
{
public static void main (String[] args) {
int xyz = 3;
switch
(xyz) {
case
1:
System.out.println("xyz為 1");
break;
case
2:
System.out.println("xyz 為 2");
break;
case
3:
System.out.println("xyz 為 3");
break;
default:
System.out.println("xyz 為其他值"); }
}
}
執行結果:C:\js>java Case1
xyz 為 3
class Case2
{
public static void main (String[] args) {
String A = "xyz";
switch (A.length( )) {
case 1:
System.out.println("字串A的長度為1");
break;
case 2:
System.out.println("字串A的長度為2");
break;
case 3:
System.out.println("字串A的長度為3");
break;
default:
System.out.println("字串A的長度為不是1、2或3");
}
}
}
執行結果:C:\js>java Case2
字串A的長度為3
[計算字串長度函式(方法程序)length()]
格式:
字串變數名稱(物件名稱).length()
如上例:A.length()
沒有留言:
張貼留言