【Java】循环结构
循环语句
循环语句是什么?
在中国裡的本土化選項裡,很重要的一個迴圈處理功能就是在指定的次數或特定的條件下持續執行處理。
在Java中,提供了循环语句的语法,包括for循环和while循环,这是在Java开发中经常使用的功能。
遍历文本
当我们想要使用循环计数器等来重复执行相同的处理时,可以使用它。
由于循环计数器和通过索引访问数组元素非常相配,因此在需要简单地逐一引用数组内容的情况下经常被使用。
如何书写for循环。
这是书写方式。
for (ループカウンタ初期化; 継続条件; ループカウンタ更新) {
繰り返し行う処理
}
作为常用的内容之一,有一种方法可以显示数组的所有元素。
对于以下情况,是输出数组的索引和值的方法。
String[] type = { "ほのお", "みず", "くさ", "いわ", "でんき", "どく", "エスパー", "じめん" };
// 配列arrの中身を全て表示する
for (int i = 0; i < type.length; i++) {
System.out.println("type[" + i + "] " + type[i]);
}

有关使用for循环的案例
关于之后的while循环和使用情况的区别,主要是在重复的次数明确的情况下使用。举个例子,
-
- 九×九のマス目を作成する。
- fizz buzzでよくある「1〜100の間の数字で」といった条件がある場合
我认为之类的。
当的时候
除了while循环之外,还有一种语法结构,写法如下。
while (継続条件) {
処理
}
尽管在示例文中不常见的情况下,这是一个输出从-5到5的数字的程序。
※请注意在代码中已经写明,如果不写i++将导致无限循环!
// 変数の初期化
int i = -5;
// 1から10までの数字を出力
while (i <= 5) {
System.out.println(i);
i++; // この記述をしないと無限ループになる!
}
以下是一个使用while的简单计算程序。
package practice_project;
import java.util.Scanner;
public class Practice1 {
public static void main(String[] args) {
int inputNum; // ユーザが入力する値
int sum = 0; // 合計値(最初は0からスタート)
// ユーザ入力読み込みオブジェクトを生成
Scanner scanner = new Scanner(System.in);
// 初回の数値入力
System.out.print("数値入力(-1で終了):");
inputNum = scanner.nextInt();
// ユーザから「-1」が入力されるまで、入力された数値をsum変数に加算
while (inputNum != -1) {
// 入力値をsumに加算
sum += inputNum;
// 2回目以降の数値入力
System.out.print("数値入力(-1で終了):");
inputNum = scanner.nextInt();
}
// 合計値を表示
System.out.println("入力された数値の合計は " + sum);
}
}

关于使用while循环的情况。
关于使用for循环的情况的差异,
当重复次数无法确定(事先不知道)时使用。
-
- ユーザーのストップなどの入力値を受け取るまでは処理を繰り返す、といったような処理を行う場合
- 電卓のように、答えが出るまで計算を続ける場合。
我认为可能会有其他的选项。
用中文原生地述说“do-while文”,只需要一种选项:
do-while循环与while循环类似,只要满足括号内的判断条件,就会重复执行代码块。用法如下所示。
do {
処理
} while (継続条件);
当看到描述时你可能会有所感悟,for和while是前置判断,而do-while是后置判断,这是它们之间的区别。
在这个后置判断的循环中,首先执行循环内的处理一次,然后进行持续条件的判断。
也就是说,for和while用于零次以上的重复处理,而do-while用于一次以上的重复处理。
当通过do-while循环来重新写一下使用while循环编写的内容时,会变成这样的样子。
package practice_project;
import java.util.Scanner;
public class Practice1 {
public static void main(String[] args) {
int inputNum; // ユーザが入力する値
int sum = 0; // 合計値(最初は0からスタート)
// ユーザ入力読み込みオブジェクトを生成
Scanner scanner = new Scanner(System.in);
// 初回の数値入力
System.out.print("数値入力(-1で終了):");
inputNum = scanner.nextInt();
// ユーザから「-1」が入力されるまで、入力された数値をsum変数に加算
do {
// 入力値をsumに加算
sum += inputNum;
// 加算値を入力
System.out.print("加算値入力(-1で終了):");
inputNum = scanner.nextInt();
} while (inputNum != -1);
// 合計値を表示
System.out.println("入力された数値の合計は " + sum + " です。");
}
}
关于使用do-while语句的案例
在使用do-while循环的情况并不多见。在遇到”至少执行一次处理后再进行循环判断”的情况时,可以考虑使用do-while循环。
中断语句和继续语句
在for循环和while循环中,可以通过break语句和continue语句来改变循环的流程。
打破文本
当编写break语句时,会立即退出循环处理。
以下是在for循环中嵌入break语句的语法。
for (int i = 0; i < 数字; i++) {
if (何かの条件) {
break; // 条件に一致したらループから抜ける
}
}
比如在之前写的程序中加入 break 语句 ,描述为“当数组 运行到第 4 个元素时停止执行”。
String[] type = { "ほのお", "みず", "くさ", "いわ", "でんき", "どく", "エスパー", "じめん" };
// 配列arrの中身を全て表示する
for (int i = 0; i < type.length; i++) {
System.out.println("type[" + i + "] " + type[i]);
if (i > 3) { //配列の4番目になったら..
break; //処理を終了する
}
}

继续写作
当编写了 continue 语句后,就可以在那一点跳过后续处理。
while (条件式) {
[ある処理A]
continue;
[ある処理B]
}
这是一个程序,输出1到10之间的数字,当数字是3的倍数时,不执行数字的处理,而是输出”3的倍数”。
// for文で1から20の数字を出力
for (int i = 1; i <= 10; i++) {
// 負の値の場合は、以降の処理をスキップ
if (i % 3 == 0) {
System.out.println("3の倍数");
continue;
}
System.out.println(i);
}

无限循环
在循环语句中,如果继续条件始终为真,该循环将成为无限循环(永久循环)。
刻意进行无限循环
无限循环是指故意发生的情况,而不是错误。它适用于“在执行重复处理的过程中,只有在满足某个条件时才希望退出循环,而重复的次数没有确定”的情况。
在使用时,只需要在满足某些条件时执行break或return语句,以退出循环或方法处理的代码块。
直到达到条件,可能也很有趣的是,持续在社交媒体上随机分钟内的某个时间段之间发布无限意识高的诗歌的程序。
要让无限循环成为可能
在使用for循环的情况下
在for循环中,如果写成for (;;)的话可以创建一个无限循环。
由于省略了继续条件,所以没有任何判断,从而形成了一个无限循环。
// forの無限ループ
for (;;) {
ループ中の処理
if (ループ脱出条件) {
break;
}
ループが終わったあとの処理
}
如果是while循环的情况下
在while循环中,可以通过将循环条件设置为true来实现无限循环。
while (true) {
ループ中の処理
if (ループ脱出条件) {
break;
}
ループが終わったあとの処理
}
由于while循环的条件被直接指定为true(真),所以它的继续条件不会变为false(假),从而导致无限循环。
而对于for循环,如果写作for (;;),也可以实现无限循环。
因为继续条件被省略了,所以没有进行判断,从而导致无限循环。
当使用do-while语句时
一个无限循环的示范程序
package practice_project;
import java.util.Scanner;
public class Practice1 {
public static void main(String[] args) {
int inputNum; // ユーザが入力する値
int sum = 0; // 合計値(最初は0からスタート)
// ユーザ入力読み込みオブジェクトを生成
Scanner scanner = new Scanner(System.in);
// 初回の数値入力
System.out.print("数値入力(-1で終了):");
inputNum = scanner.nextInt();
// ユーザから「-1」が入力されるまで、入力された数値をsum変数に加算
while (inputNum != -1) {
// 入力値をsumに加算
sum += inputNum;
// 2回目以降の数値入力
System.out.print("数値入力(-1で終了):");
inputNum = scanner.nextInt();
}
// 合計値を表示
System.out.println("入力された数値の合計は " + sum);
}
}

多层循环
在循环结构中嵌套另一个循环结构称为多重循环。
使用多层循环来创建九九乘法表。
因为上次做的时候遇到了很多困难,所以在这里我将总结一下。
程式碼和執行內容。
首先让我向您展示一下形式。我使用了多层循环的for语句来编写代码,您能理解吗?
// 九九表を表示
for (int i = 1; i <= 9; i++) {
for (int j = 1; j <= 9; j++) {
System.out.print(i * j + " ");
}
System.out.println();

看到执行结果就可以看出,外层的 i 每增加一次,内层的 j 就会从1到9不断变化进行九九乘法计算。
此外,在内层的 j 接到9之后,就在增加外层的 i 之前,通过System.out.println()打印换行符。
这样一来,在显示完一个乘法表之后就会进行换行。
【补充】System.out.println();与System.out.print();

由于将所有值的输出都输入为 System.out.println,这就是原因。
System.out.print(表示する内容);
System.out.println(表示する内容);
就算写法一样,决定性的区别是是否换行。
当时不知道这个区别,纠结于解决循环写法问题,却找不到答案,原因在于它。
-
- println は改行される
- printは 改行されない
代码和执行结果都很麻烦,但我打算这样做,以便将其牢记在脑海中。
// println は改行される
System.out.println("println は改行される");
System.out.println("println は改行される");
// print は改行されずにつながっていく
System.out.print("printは改行されずにつながっていく");
System.out.print("printは改行されずにつながっていく");
System.out.print("printは改行されずにつながっていく");

最后
在处理其他语言时,我也接触过循环语句,但只有通过以各种不同的模式编写和输出,才能真正将其变为一项技能。我会继续更新。
文献引用
- Javaで文字列を出力する:print(), println()