【Java】条件判断与循环

如果

可以进行分支
在if后面的括号中填写分支条件
由条件表达式和代码块构成

有一个可以进行分岐的例子是…

家里有面包吗?
→ 有的
那我们就烤吐司吃吧!
→ 没有
那我们去面包店买吧!

使程序能根据条件进行处理的方式是通过改变编程来实现的。

public class Main {
    public static void main(String[] args) {
        boolean bread = true;
        if (bread == true) {
            System.out.println("じゃあトーストにして食べよう!");
        } else {
            System.out.println("パン屋へ買いに行こう!");
        }
    }
}

请在第三行中,用布尔类型的变量 bread 表示真(也可以是假)来填写。

如果(bread == true)成立,则在if语句的第四行执行分支。在此情况下,表示如果变量bread被赋值为true的话,就会执行下面的操作。

如果第五行是 true,那么请执行以下处理。

第六行的else指的是除了”true”以外的情况。
在第七行,执行这样的处理。

じゃあトーストにして食べよう!

如果将第三行从true改为false的话,那么就会变成…

パン屋へ買いに行こう!

显示为

只有[のみの]语法

如果条件满足,则执行指定的处理;如果条件不满足,则不做任何操作。

public class Main {
    public static void main(String[] args) {
        int number = 5;
        if (number == 5) {
            System.out.println("ごりら!");
        }
    }
}

如果变量number被赋值为5的话,

犀牛!

只要显示为该值,在其他数字被输入时,不进行任何处理。

如果-否則如果-否則構造

一个 if 语句可以将分叉点分成三个或更多的路径。

public class Main {
    public static void main(String[] args) {
        int number = 1;
        if (number == 1) {
            System.out.println("いちご!");
        } else if (number == 2) {
            System.out.println("にんじん!");
        } else if (number == 3) {
            System.out.println("サンダル!");
        } else {
            System.out.println("わかんな〜い");
        }
    }
}

如果变量number被赋值为1,则输出“草莓!”;如果为2,则输出“胡萝卜!”;如果为3,则输出“凉鞋!”;如果是其他数字,则显示“我不知道~”。通过使用else if语句,我们可以实现三个以上的分支。

切换文档

所有条件式都是以变量 == 值、变量 == 变量的形式来比较左右两边是否相等的表达式。
switch后面的括号内不是表达式,而是需要填写变量名。
case 值:中的:是冒号,要注意不要与分号;弄混。
在case后面的处理的最后加上break。
default的意思与if语句中的else相同,用于处理条件不符合的情况。与else一样,在处理不需要的情况下可以省略。break也可以省略。

可以将之前用过的 if-else if-else 结构的编程代码改写成 switch 语句。

public class Main {
    public static void main(String[] args) {
        int number = 1;
        switch(number) {
            case 1:
                System.out.println("いちご!");
                break;
            case 2:
                System.out.println("にんじん!");
                break;
            case 3:
                System.out.println("サンダル!");
                break;
            default:
                System.out.println("わかんな〜い");
        }
    }
}

与文对比,{ }减少了,并且else if之后的( )也减少了,这样使得阅读更加方便。

如果忘记写break语句会发生什么?

public class Main {
    public static void main(String[] args) {
        int number = 1;
        switch(number) {
            case 1:
                System.out.println("いちご!");
            case 2:
                System.out.println("にんじん!");
                break;
            case 3:
                System.out.println("サンダル!");
                break;
            default:
                System.out.println("わかんな〜い");
        }
    }
}

如果我故意删除了第7行的 case 1 的 break,会发生什么呢?

いちご!
にんじん!

不仅显示了案例1,还显示了案例2。

switch语句是一种指令,它会跳转执行到与括号内的变量匹配的case标签处。
因此,不会产生编译错误。
如果不添加break来停止执行,程序会一直执行到下一个case的代码。

不写 break

可以利用不填写这个break来逆向利用它不会停止处理的特性。

public class Main {
    public static void main(String[] args) {
        int rank = 1;
        switch(rank) {
            case 1:
                System.out.println("優秀!");
                break;
            case 2:
            case 3:
            case 4:
                System.out.println("ふつう");
                break;
            case 5:
                System.out.println("がんばって!");
                break;
        }
    }
}

当rank为1时,会显示为“优秀!”。
而当rank为2至4时,输出的文字内容全部相同,为“普通”。
为了让程序跳过case 2和case 3的break命令并执行case 4,特意删除了这两个命令。

通过这样做,反而提高了可读性,使代码更易读了。

在文中

可以执行循环处理
在 “while” 后面的括号中填写继续循环的条件
由条件表达式和代码块组成

public class Main {
    public static void main(String[] args) {
        int day = 1;
        while (day <= 7) {
            System.out.println(day + "日目");
            day++;
        }
        System.out.println("1週間が経ちました");
    }
}

将第三行的变量day赋值为1。

只需要一个选项,以下是对原文的中文翻译:

第四行的 `while` 后面的 `(day <= 7)` 用来表示循环的条件。在这种情况下,意思是请重复执行第五行到第六行的操作,直到变量 `day` 的值为 7。目前变量 `day` 被赋值为 1。

由于第5行将变量day赋值为1,因此将显示为第一天。
通过第6行的day++,将变量day增加1,变为2。
回到第4行的while循环。

刚刚将变量day加1,因此变量day被赋值为2。
(day<=7) 即2<=7满足条件,因此重复执行第5到第6行的处理。

由于第五行的变量day被赋值为2,所以会显示为第2天。
通过第六行的day++,将变量day增加1,变为3。
返回到第四行的while循环,并且重复这个过程,直到变量day变为7。

当变量day等于7时,将继续执行循环操作,最后通过day++将变量day赋值为8。然后回到第4行的while语句。

现在变量 day 被赋值为 8。
(day <= 7)也就是 8 <= 7,但不满足条件。
在这里会结束循环处理。
循环结束后,将跳过执行第5行到第6行的处理,而直接进行第8行的处理。

然后执行第8行的操作,程序就会结束。

1日目
2日目
3日目
4日目
5日目
6日目
7日目
1週間が経ちました

执行-直到 语句

只要条件不改变,`while`循环将会持续执行。而`do-while`循环则是先执行一次语句,然后在条件改变之前持续执行。

public class Main {
    public static void main(String[] args) {
        int day = 1;
        do {
            System.out.println(day + "日目");
            day++;
        } while (day <= 7) ;
        System.out.println("1週間が経ちました");
    }
}

将数字1赋值给第三行的变量day。

在这个 do-while 循环中,首先会执行处理,然后再进行条件确认。

在第5行中,显示第一天的字符。
在第6行中,将变量day加1,因此将1 + 1赋给2。

在第七行中,通过 while (day <= 7) 来判断条件是否满足。由于变量day被赋值为2,所以满足条件2 <= 7,因此会返回到第四行并继续执行循环处理。

当(day<=7)时,如果变量day的值为8,则不满足条件,循环将结束。

程序结束并显示“已经过了第8行的一周”。

用于文本

指定回数重复执行

public class Main {
    public static void main(String[] args) {
        for (int cake = 0; cake < 5; cake++) {
            System.out.println("パンケーキ食べたい!");
        }
    }
}

第三行是一个for循环。
我觉得有点复杂…但只要了解每个意义,就不难了。
我会解释给你听的。

在文中

蛋糕 = 0。

这是问要把什么放在初始值里吗?
如果根据上述句子来说的话,就是将变量cake赋值为0。
这就是意思。

并且接下来

蛋糕少于5个。

这个是要重复多少次处理呢?
顺便你知道要重复多少次吗??
实际上,处理要重复5次。

刚才我设置了初始值为int cake = 0。换句话说,

零 一 二 三 四

这个过程包含了0并重复执行了5次。

最后

蛋糕加加。

这起到了计数的作用,以便反复执行处理。它能在每次处理完成后为我们计数一次。

作为次序来说…

备注:以下是一种可能的中文表达。

将0赋给变量cake。

请往下翻。

蛋糕 < 5;换句话说 0 < 5;因此满足条件,则输出”想吃蛋糕!”。

请转至下一页。

蛋糕++,因此通过0 + 1,将变量蛋糕赋值为1。

请将以下内容用中文进行同义转述,只需提供一种选项:

请转述以下内容为中文,只提供一种选项

饼干 < 5; 换句话说,1 < 5; 所以条件匹配,输出”想吃蛋糕!”

请原谅我迟到了。

因为有cake++,所以通过1 + 1将变量cake赋值为2。

请用中文翻译以下内容,只需要一种选项:↓

面包 < 5; 换句话说,2 < 5; 因此条件匹配,输出 “想吃蛋糕!”。

请将下面的句子用中文进行本地化改写,只需要一个选项:

请将下列句子用中文表达,仅需提供一种选项:

蛋糕++ 所以通过2 + 1,变量蛋糕被赋值为3。

请用中文进行重述

蛋糕 < 5;换句话说,3 < 5;所以条件匹配,会输出“想吃蛋糕!”

请用中文将以下内容改写:↓

因此,通过3 + 1,变量cake被赋值为4。

请将以下内容用中文进行翻译(只需要一种选项):

cakes数量小于5,换句话说是4小于5,因此条件匹配,输出“想要吃蛋糕!”

请将以下内容用中文进行语义改写,只需给出一个选项:

由于cake++,所以4 + 1被赋值给变量cake,即cake = 5。

请将以下内容用中文进行释义:

蛋糕不小于5;也就是说5不小于5;因此条件不匹配。
在此处结束处理。

我想你可能已经意识到了,但是int cake = 0;这部分只处理了1次。
这部分只处理一次,而且是在开始的时候。

如果这里也变成循环处理的话

将cake++加1后,即使int cake = 0;重复赋值为0,
再次cake++加1后,即使int cake = 0;再次赋值为0,…
这将导致永远无法结束的无限循环。

パンケーキ食べたい!
パンケーキ食べたい!
パンケーキ食べたい!
パンケーキ食べたい!
パンケーキ食べたい!

顺便说一下,虽然这是默认值,但并不一定需要从0开始。

for (int cake = ; cake < ; cake++) 

如果你想重复5次,请将次数部分设为cake < 6;或cake <= 5;亦可尝试反向模式。

for (int cake = 5; cake > 0; cake--)

这样,初始值为5,然后cake递减1,直到cake的值变为0。
即,当cake > 0时(即1 > 0),就持续进行处理。

继续前进

跳过指定的周期并进行下一周期的处理。

public class Main {
    public static void main(String[] args) {
        for (int cake = 0; cake < 5; cake++) {
            if (cake == 3) {
                continue;
            }
            System.out.println("パンケーキ食べたい!");
        }
    }
}

这是什么意思啊

如果(蛋糕等于3),则继续。

如果变量 cake 被赋值为3,请跳过处理(想吃蛋糕!)并转到下一个处理步骤。

因此,当执行时

パンケーキ食べたい!
パンケーキ食べたい!
パンケーキ食べたい!
パンケーキ食べたい!

我认为在 switch 语句中使用了 break 命令来停止执行,因此只执行了4次。

中断→打破
スキップ→跳過

这两个看起来相似,但实际上有所不同。
顺便一提,如果将上述的“continue”改为“break”,那么处理将在第三次中断,
所以“我想吃松饼!”只会被处理三次。

阻塞和条件表达式

阻挡

一系列的文集,利用分支或循环进行执行。

public class Main {
    public static void main(String[] args) {
        boolean bread = true;
        if (bread == true) {
            System.out.println("じゃあトーストにして食べよう!");
        } else {
            System.out.println("パン屋へ買いに行こう!");
        }
    }
}

就像我之前在if语句里解释的那段代码一样,我们来举个例子。
关于这个代码块,具体来说是第5行和第7行。再具体点儿说,

{
System.out.println("じゃあトーストにして食べよう!");
}

在第4行的”if (bread == true)”后面的{直到第6行的else之前的}是一个代码块。

{
System.out.println("パン屋へ買いに行こう!");
}

else之后的内容到第8行的}为止是一个代码块。

public class Main {
    public static void main(String[] args) {
        int day = 1;
        while (day <= 7) {
            System.out.println(day + "日目");
            day++;
        }
        System.out.println("1週間が経ちました");
    }
}

我会用一种方式在华语中进行释义:刚才那个”while”字我会在以下的句子中进行解释。

{
System.out.println(day + "日目");
day++;
}

从第四行的 while (day <= 7) 后面的 { 到第七行的 } 为止。

条件式

(There is no need to provide multiple options as the original phrase is already concise and clear.)

如果在「や while のあとに()内に記入された式」之后填写的内容是一个 if 语句,那么()中的内容将会是一个用于分支条件的判断;如果是一个 while 语句,那么()中的内容将会是一个用于继续循环条件的记载。

if (bread == true)

假如面包是真的

while (day <= 7)

的是指(天数 <= 7)之类的事情。

广告
将在 10 秒后关闭
bannerAds