JAVASE Xiaobaiスタディノート(3)フロー制御ステートメントの構造

フロー制御ステートメントの構造には、シーケンス構造、ブランチ構造、ループ構造があります。、具体的な手順については、以下の表を参照してください。

フロー制御ステートメントの構造
シーケンス構造:上から下に順番に実行
ブランチ構造:さまざまな選択に従って、さまざまなコードを実行します。if ... else and switch ... case
ループ構造:条件に応じて特定のコードを繰り返し実行します。for、while and do ... while

1.シーケンス構造

シーケンス構造:同じ方法で上から下に実行

package westos.lianxi.zuoye;
/*顺序结构:在同一个方法中代码从上往下依此进行执行.从键盘上输入一个值,并进行打印输出*/
/*实现键盘输入的步骤: 1.导包,格式为:import  java.util.Scanner;
                      导包的位置必须在源文件的上面,在class的上面
                      2.创建键盘录入对象
                      格式为:Scanner sc=new Scanner(System.in);
                      3.通过对象获取数据
                      格式为:int a=sc.nextInt();
 */
import java.util.Scanner;//导包
public class ShunXuJieGou {
    
    
    public static void main(String[] args) {
    
    
        System.out.println("欢迎登陆教务系统");
        //创建键盘录入对象
        Scanner sc=new Scanner(System.in);

        System.out.println("请输入您的姓名:");
        String s=sc.next();
        System.out.println("您的姓名为:"+s);

        System.out.println("请输入您的年龄:");
        int age=sc.nextInt();
        System.out.println("您的年龄为"+age);

        System.out.println("请输入您的分数:");
        double score=sc.nextDouble();
        System.out.println("您的分数为:"+score);

        System.out.println("请告知是否毕业");
        boolean flag=sc.nextBoolean();
        System.out.println("您的毕业情况为:"+flag);
    }
}

出力結果は次のとおりです。

欢迎登陆教务系统
请输入您的姓名:
小明
您的姓名为:小明
请输入您的年龄:
18
您的年龄为18
请输入您的分数:
85.5
您的分数为:85.5
请告知是否毕业
true
您的毕业情况为:true

2.分岐構造

2.1条件文

2.1.1if単一ブランチステートメント

if单分支语句的语法格式:
if(条件表达式){
//当条件表达式结果为true时,需要执行的语句块
}

説明:
(1)条件式は、ブール式(関係式または論理式)またはブール変数でなければなりません。
(2)ステートメントブロックにステートメントが1つしかない場合は、{}を省略できますが、そのままにしておくことをお勧めします。
(3)実行フロー:条件が成立したときにステートメントを実行します。それ以外の場合は実行されません。

ここに画像の説明を挿入


2.1.2 if ... else二重分岐条件ステートメント

if else双分支条件语句的语法格式为:
if(条件表达式){
    
    
//当条件表达式结果为true时,需要执行的语句块1
}else{
    
    
//当条件表达式结果为false时,需要执行的语句块2
}

説明:
(1)条件式は、ブール式(関係式または論理式)、ブール変数でなければなりません。
(2)ifまたはelseステートメントブロックにステートメントが1つしかない場合は、{}を省略できますが、保持することをお勧めします。
(3)実行結果:条件が確立されたときにステートメントブロック1を実行し、次の場合にステートメントブロック2を実行します。条件が確立されていません

ここに画像の説明を挿入


2.1.3 if ... elseマルチブランチ条件ステートメント

if...else多分支条件语句的语法结构:
if(条件表达式1{
    
    
//当条件表达式1结果为true时,需要执行的复合语句1
}else if(条件表达式2{
    
    
//当条件表达式结果为true时,需要执行的复合语句2
...
else{
    
    
//当上述条件表达式结果为false时,需要执行的语句
}

注:
(1)ifまたはelseの後に{}は必要ありませんが、{}はなく、デフォルトでは1つのステートメントしか使用できません。つまり、ifまたはelseに続くステートメントブロックにステートメントが1つしかない場合、{}は省略できますが、読みやすさは十分ではありません。
(2)最後のその他は不要で省略できます。
(3)実行プロセス:条件を上から下に判断します。特定の条件が確立されると、対応するステートメントブロックが実行され、次の条件は実行されません。読んだ。すべての条件が満たされていない場合、elseがある場合は、elseを実行し、elseを実行します。elseがない場合は、何も実行しません。

ここに画像の説明を挿入

package westos.lianxi.zuoye;

public class DuoFenZhi {
    
    
    public static void main(String[] args) {
    
    
        int score=89;
        //if...else if多分支语句
        if(score>90&&score<=100){
    
    
            System.out.println("成绩优秀");
        }
        else if(score>80&&score<=90){
    
    
            System.out.println("成绩良好");
        }
        else if(score>60&&score<=80){
    
    
            System.out.println("成绩及格");
        }
        else{
    
    
            System.out.println("成绩不及格");
        }
    }

}

出力結果は次のとおりです。

成绩良好

2.1.4ネスティング

if ... elseシリーズのステートメントはネストでき、他の条件ステートメントは任意のステートメントブロックにネストできます

実装機能:外部条件が満たされると、内部条件が判断されます


3.構造を選択します

选择结构-switch语法结构:
switch(表达式){
    
    
case 常量值1//执行语句块1
[break;]//break可以省略
case 常量值2//执行语句块2
[break]......
case 常量值n:
//执行语句块n;
[break];
[default:
//执行缺省语句(默认语句)
[break];
]
}

ここに画像の説明を挿入

予防
式によって返される結果の型は、byte、short、char、int、列挙型(JDK1.5以降)、文字列(JDK1.7以降)のみです。
式によって返される結果のタイプは、ケースの後の値のタイプと一致している必要があります
ケースの後には定数値のみが続き、変数値や不確実な式の値は続きません。
同じswitchステートメントで、caseの定数値は互いに異なっている必要があります
ブレークはオプションです。式の結果がケースの後の値と一致する場合、対応するブランチのステートメントが実行されます。ブランチに入ると、ブレークが発生するまでスイッチを終了できません。それ以外の場合は、スイッチは実行を継続します。次の1つ。ケースステートメント(ケースペネトレーションの場合もあります)
デフォルトはオプションです。位置は必ずしも最後である必要はなく、任意の場合の位置にすることができます。ただし、どこにいても、すべてのケースの定数値が一致しない場合にのみデフォルトのブランチに入り、ブレークまたはスイッチの閉じ括弧「}」に遭遇した場合にのみ停止します。

概要:
1。スイッチの入口で、式の値が特定のケースに一致するか一致せず、デフォルトから
2.switchの出口に入り、breakまたはswitchの閉じ括弧「}」で終了します。


4.条件付き判断と選択構造の選択

1.条件判定が同等判定で、式の結果がbyte、short、char、int、enumeration、String型の場合は、switchを使用する方が適切であり、その他の条件を判定し
ます。2.switchを使用できます。 ... caseはい、間違いなく使用できます... else、returnは必ずしも必要ではありません


5.ループ構造

ループ構造は、特定の条件が満たされたときに特定の操作を繰り返し実行することです。一般的に使用される3つのループステートメントがjavaで提供されています。つまり、whileループステートメント、do ... whileループステートメント、およびforループステートメントです。

5.1whileループステートメント

while循环语句语法结构:
while(条件表达式){
    
    
//循环体语句块
}

ここに画像の説明を挿入

実行プロセス:
(1)最初にループ条件を判断します
(2)条件が確立され、ループ本体ステートメントブロックを実行します
(3)(1)に戻ります
(4)条件が確立されていないことを確認し、whileループを終了します


5.2 do ... whileループステートメント

do while循环语句语法结构:
do{
    
    
//循环体语句块
}while(条件表达式);

実行プロセス:
(1)最初にループ本体ステートメントブロックを無条件に実行します
(2)次にループ条件を判断します
(3)条件が満たされ、ループ本体ステートメントブロックを再度実行します
(4)(2)に戻ります
(5)条件が満たされていない場合は、終了します…ループ中

注:
ループ本体が1回実行された後、条件が再度判断されます。条件が確立されると、次のループ本体が続行されるため、do ... whileループはループ本体を少なくとも1回実行します。

ここに画像の説明を挿入


5.3forループステートメント

for循环结构语法结构:
for(初始化表达式1;循环条件表达式2;迭代表达式3[
//循环语句块
}

実行プロセス:
(1)初期化式1の実行
(2)ループ条件式2の決定
(3)条件が満たされた場合、ループ本体ステートメントブロックの
実行(4)反復式3の実行
(5)繰り返し(2)(3)( 4)(5)
(6)ループ条件が確立されなくなるまで、forループを終了します

ここに画像の説明を挿入

注意:

  • 2つのセミコロンが必要です
  • 3つの式は省略できますが、breakと組み合わせる必要があります。そうしないと、無限ループが発生します。
  • 式1は複数の変数宣言を持つことができますが、それらはコンマで区切られた同じ型である必要があります
  • 式3には、更新する複数の変数をコンマで区切って含めることができます

5.43つのループステートメントの比較

ここに画像の説明を挿入

3つのループステートメントの比較
3種類のループステートメントは、相互に変換できる特定のコードのループと繰り返し実行を実現できます。
実行順序が異なります。forとwhileが最初に判断されてから実行され、do ... whileが最初に実行されてから判断されます。
実行効果は異なります。whileとforの場合、最初の条件が満たされない場合、ループ本体は1回実行されません。whiledo... whileは、ループ本体を1回実行し、条件を判断してループ本体かどうかを確認します。 2回目に実行されます。
異なる実行効率:do ... whileが最も効率的です
各ループには4つのループ要素があり、forループは最も明白なループ変数の初期値、ループ条件、ループ本体、ループ変数の更新の反復を反映しています。
forループは明確な数のループに適しており、do ... whileは少なくとも1つのループに適しています。whileは、比較的明確なループ条件に適しています

5.5ネストされたループ

完全なループ構造は、ループ本体にネストされています。1つのループ構造が別のループのループ本体を埋めます。
その他のループ構造は、3つのループ本体にネストできます。

実行特性:最初に外側のループを実行し、外側のループを1回実行し、内側のループを最初から最後まで1ラウンド実行します。

合計回数=外側のサイクル数*内側のサイクル数。詳細:合計回数=内側のループの最初のラウンドの数+内側のループの2番目のラウンドの数+3番目の内側のループの数... + n番目のラウンドの数内側のループ。ラウンド数は、外側のループの数です。

4行5列の長方形を印刷します#

(1)#を4行印刷します

public class QianTao2 {
    
    
    public static void main(String[] args) {
    
    
        for(int i=0;i<4;i++){
    
    
            System.out.println("#####");
        }

    }
}

出力結果は次のとおりです。
ここに画像の説明を挿入
(2)1行あたり5#、ループを使用することもできます

public class QianTao2 {
    
    
    public static void main(String[] args) {
    
    
        for (int i = 0; i < 4; i++) {
    
    
            for (int j = 0; j < 5; j++) {
    
    
                System.out.print("#");
            }
            System.out.println();

        }
    }
}

出力結果は次のとおりです。
ここに画像の説明を挿入


5.6ジャンプ

ジャンプ
ブレーク:スイッチまたはループでのみ使用でき、現在のループまたはスイッチからジャンプするために使用されます
続行:ループでのみ使用できます。このループを早期に終了して、次のループに進みます
return:現在のメソッドを終了するために使用されます
package westos.lianxi.zuoye;

public class TestBreak {
    
    
    public static void main(String[] args) {
    
    
        for(int i=1;i<=5;i++){
    
    
            for(int j=1;j<=5;j++){
    
    
                System.out.print("*");
                if(i==j){
    
    
                    break;
                }
            }
            System.out.println();
        }
    }
}

出力結果は次のとおりです。
ここに画像の説明を挿入

package westos.lianxi.zuoye;

public class TestContinue {
    
    
    public static void main(String[] args) {
    
    
        for(int i=1;i<=5;i++){
    
    
            for(int j=1;j<=5;j++){
    
    
                System.out.print("*");
                if(i==j){
    
    
                    continue;
                }
            }
            System.out.println();
        }
    }
}

結果は次のとおりです。
ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/qq_41537102/article/details/109612993