Javaの基本-ループ構造(2つ)-複数のループ
はじめに:前述の単一ループを使用すると、発生した多くの問題をすでに解決できますが、なぜ複数ループを使用するのですか?もちろん、発生した問題を1つのサイクルで解決できない場合は、複数のサイクルを使用できます。
[例:前に説明したループ構造を使用して次のグラフィックを出力する方法]
最初のループ構造は実行できるかもしれませんが、2番目のループ構造はより面倒で、3番目のループ構造はあきらめます。!!
したがって、この種のビット問題をよりよく解決するには、複数のサイクルを学習することが不可欠です。
マルチループとは
フォーカス
上記のように、複数のループの基本構造はもちろん、3層、4層などにすることもできます。ただし、3層を超えないようにすることをお勧めします、3層を超えるため、プログラム実行の効率が大幅に低下します。
しかし、ループから抜け出したい場合はどうでしょうか。
前の章で話しましたブレーク、実際には、継続すると戻る
複数のループの例
1.まず、複数のループを使用して最初の2つのグラフィックを実行します
//平行四边形
for (int i = 0; i <5 ; i++) { //控制行数
for (int k = 0; k <4-i ; k++) { //列-空格
System.out.print(" ");
}
for (int j = 0; j < 5; j++) { //列-*
System.out.print("*");
}
System.out.println();
}
//金字塔
System.out.println("请输入你要几行"); //输出数字金字塔
int n = new Scanner(System.in).nextInt();
for(int i =1;i<=n;i++){ //外层循环控制行数,内层循环控制列
for(int j=1;j<=n-i;j++){ //空格
System.out.print(" ");
}
for(int k=1;k<=2*i-1;k++){ //输出内容
System.out.print("*"); //其实这里的 * 可以改成 i,你们可以试一下哦
}
System.out.print("\n");
}
//圣诞树--其实就只在金子塔的基础上加了奇偶判断
System.out.println("请输入你要几行"); //圣诞树(上面的加入奇偶行判断)
int n = new Scanner(System.in).nextInt();
for(int i =1;i<=n;i++){ //外层循环控制行数
for(int j=1;j<=n-i;j++){ //空格
System.out.print(" ");
}
if(i%2==0){
for(int k=1;k<=2*i-1;k++){ //输出内容
System.out.print("~");
}
}else {
for(int k=1;k<=2*i-1;k++){ //输出内容
System.out.print("*");
}
}
System.out.print("\n");
}
結果を図に示します。
次に、複数のサイクルの古典的な問題について少しやってみましょう
1.素数
//输出2-100之间的素数
for (int i = 2; i <=100 ; i++) { //外层循环2-100
int tag = 0; //标记是否为素数
for (int j = 2; j <i ; j++) { //内层循环从2到自生
if(i%j==0){ //判断是否为素数
break;
}else {
tag = 1;
}
}
if(tag==1){
System.out.print(i+"\t");
}
}
[ヒント:ここでの出力形式は少し見苦しいです。心配しないでください。次の章を終えた後、1行あたりの行数に応じて出力できます。】
2。9* 9九九
//9*9乘法表
for (int i = 1; i <= 9; i++) {
for (int j = 1; j <= i; j++) {
System.out.print(i+"*"+j+"="+i*j+"\t");
}
System.out.println();
}
別の形式の9 * 9九九
for (int i = 1; i <= 9; i++) {
for (int j = 1; j <= 9-i; j++) {
System.out.print("\t\t"); //为了美观这里格式不要出
}
for (int j = 1; j <= i; j++) {
System.out.print(i+"*"+j+"="+i*j+"\t");
}
System.out.println();
}
2つの違いがわかります。
3.回文の数
//回文数
System.out.println("请输出一个数,判断它是否为回文数");
int x = new Scanner(System.in).nextInt();
if (x < 0) {
System.out.println(false);
}
int reverse = 0;
int number = x;
while (number != 0) {
int temp = number % 10; //取最后一个数
number /= 10; //去掉最后一位
reverse = reverse * 10; //低位变高位
reverse += temp; //形成相反的数
}
System.out.println(reverse==x); //比较反转前后,相同则是回文数
結果を図に示します。