Java语言程序设计.基础篇 第五章 循环

for,while的应用

- 最下面附上一些练习题

  • while循环

while 循环的语法如下:

while(循环继缞条件){
	// 循环体
	语句(组);
  } 

在这里插入图片描述

一些while循环,我们可以让他们成为一个“死循环”,如:while(true){}然后我们在循环体内可以进行while循环的退出。

  • do-while循环
do{ 
// 循环体;
语句(组); } while(循环继续条件);

它首先执行循环体,然后计算循环继续条件。如果 计算结果为 true, 则重复执行循环体;如果为 false, 则终止 do-while 循环。while 循环与 do-while 循环的差别在于:计算循环继续条件和执行循环体的先后顺序不同。在do-while中,循环中的语句必须至少执行一次。

  • for循环
    for 循环语句是从关键字 for开始,然后是用双括号括住的循环控制结构体,如:
for(初始操作;循环继续条件;每次迭代后的操作){
	//循环体
}

for循环的死循环可以写成

for(; ;){
	//循环体
}

- 一个循环可以嵌套在另一个循环中,我们称它位嵌套循环
嵌套循环是由一个外层循环和一个或多个内层循环组成的。每当重复执行一次外层循环时将再次进人内部循环,然后重新开

5.17(显示金字塔)编写程序,提示用户输人一个在1到15之间的整数,然后显示一个金字塔形状的图案。

import java.util.*;
class Class15{
    public static void main(String[] args){
        Scanner scanner = new Scanner(System.in);
        System.out.print("请输入一个数字:");
        int  num = scanner.nextInt();
        for(int i=1;i<=num;i++){
            for(int j=1;j<=num-i;j++){
                System.out.print("  ");
            }
            for(int k=-(i-1);k<=i-1;k++){
                System.out.print(Math.abs(k)+1+" ");
            }
            System.out.println();
        }
    }
}

此题用到了for循环以及它的嵌套循环,最重要的是对数字金字塔如何从中间分开,然后左右两边打印数字。利用绝对值的特性对数字进行打印。第一个for循环是打印每行的数字,第二个for循环是打印每行的空格数,最后一个for循环比较难,打印的是数字。因为绝对值中,比如输入7,它的最后一行应该是-7到7,但是-7到7中间会有一个零,所以得想办法将零去掉,最简单的就是让它从-6到6打印,最后再加1,不仅将零去掉,而且不影响它第七行的数字。

5.18(第二个和第三个))使用嵌套的循环语句,用四个独立的程序打印下面的图案:

/*
1 2 3 4 5 6
  1 2 3 4 5
    1 2 3 4
      1 2 3
        1 2
          1
===============
          1
        2 1
      3 2 1
    4 3 2 1
  5 4 3 2 1
6 5 4 3 2 1
*/
class Home15{
    public static void main(String[] args){
        for(int i=0;i<6;i++){
            for(int j=6;j>6-i;j--){
                System.out.print("  ");
            }
            for(int k=0;k<6-i;k++){
                System.out.print(k+1+" ");
            }
            System.out.println();
        }
        System.out.println("===============");
        int k=1;
        for(int i=1;i<=6;i++){
            for(int j=1;j<=6-i;j++){
                System.out.print("  ");
            }
            for(;k>0&&k<=i;k--){
                System.out.print(k+" ");
            }
            k = i+1;
            System.out.println();
        }
    }
}

这两道题的前两个for循环都是为了控制每行的输出和每行空格的输出,最重要的都在第三个for循环上面。以第二个位例,我写这个题的时候,将for循环里面的k值再for循环的嵌套外面定义,为了不让第三个for循环里的迭代操作所影响,从题可以看出来,第一行是1,第二行是2 1 ,以此类推会发现每行对应着开始的数字是多少,所以会想到每行的k让它从每行所对应的数字开始递减,如,第二行开始,让k为2开始递减直至k<0时退出循环,这样就解决了递减的问题。

5.19(打印金字塔形的教字)编写一个嵌套的 for 循环,打印下面的输出

/*
                               1
                           1   2   1
                       1   2   4   2   1
                   1   2   4   8   4   2   1
               1   2   4   8  16   8   4   2   1
           1   2   4   8  16  32  16   8   4   2   1
       1   2   4   8  16  32  64  32  16   8   4   2   1
   1   2   4   8  16  32  64 128  64  32  16   8   4   2   1

   利用绝对值
*/
class Home16{
    public static void main(String[] args){
        for(int i=1;i<=8;i++){      //行
            for(int j=1;j<=8-i;j++){
                System.out.print("    ");
            }
            for(int k=-(i-1);k<=i-1;k++){       //列的次方输出
                System.out.printf("%4.0f",Math.pow(2,i-1-Math.abs(k)));
            }
            System.out.println();
        }
    }
}

这道题和之前的题一样,最重要的还是在最后一个for循环的打印。从题中可以看出来每行数字都是2^(i-1),然后把中间看作是分割线,这样又会利用到绝对值。从第三个for循环来看,最大是2的7次方,但是有八行,所有我们可以将for循环里面的k定义为 -(i-1),比如,当i为8时,k=-7,所以下面的i-1-Math.abs(k)就可以控制幂了。

5.25 (计算Π)使用下面的数列可以近似计算Π(PI)

//模拟求∏
class Class16{
    public static void main(String[] args){
        double sum=0;
        for(int i=1;i<=10000;i++){
            sum += Math.pow(-1,i+1)/(2*i-1);
        }
        double PI = 4*sum;
        System.out.println(PI);
    }
}

利用for循环和Math.pow以及数学知识来计算Π的值

5.27(显示闰年)编写程序,显示从101到2100年期间所有的闰年,每行显示10个。数字之间用一个空格字符隔开,同时显示这期间闰年的数目

/*
    显示从101年到2100年之间所有的闰年,每行显示10个
*/
class Home17{
    public static void main(String[] args){
        int count = 0;
        for(int year = 101;year<=2100;year++){
            if((year%4==0 || year%400==0) && year%10!=0){
                count++;
                System.out.print(year+" ");
                if(count==10){
                    System.out.println();
                    count = 0;
                }
            }
        }
    }
}

判断闰年的方法是,年份对4取余等于0或年份对400取余等于0并且年份对10取余不能等于0;我们利用这个方法然后运用for循环和if语句的控制就能输出题目所说的要求的年份。

5.51 ( 最长的共同前緻)编写一个程序,提示用户输人两个字符串,显示两个字符串最长的共同前缀

/*
    提示用户输入两行字符串,然后输出他们的共同前缀
*/
import java.util.*;
class Home19{
    public static void main(String[] args){
        Scanner scanner = new Scanner(System.in);
        String[] str1;
        String[] str2;
        String s="";
        while(true){
            System.out.print("请输入第一行字符串:");
            String s1 = scanner.nextLine();
            System.out.print("请输入第二行字符串:");
            String s2 = scanner.nextLine();
            str1 = s1.split(" ");
            str2 = s2.split(" ");
            if(!(str1[0].equals(str2[0]))){
                System.out.println("没有相同前缀");
                return;
            }
            for(int count =0;count<str1.length;count++){
                if(str1[count].equals(str2[count])){
                    s +=str1[count];
                }else{
                    System.out.print("共同前缀是:"+s+" ");
                }
            }
            break;
        }
    }
}

本道题我用到了while循环和for循环以及字符串数组和里面的一些方法,首先用scanner.nextLine();方法将输入进来的两行字符串进行存储,然后用“切片”的方法也就是split(" ");方法将里面的空格去掉,最后将没有空格的字符串存入字符串数组中,接下来用for循环进行遍历一次比较两个字符串数组中是否有相同的前缀,如果开始比较就没有的话直接结束函数,否则一直往后比较,知道没有共同前缀为止。

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java语言程序设计(基础) PDF》是一本介绍Java语言基础知识和编程技巧的电子书。这本书主要分为七个部分,从基本的概念开始逐步讲解Java语言的各个方面。 第一部分介绍了Java的发展历史和编程环境的安装,以及Java程序的基本结构和执行过程。读者可以了解到Java语言的特点和运行原理。 第二部分介绍了Java的数据类型和变量,包括基本数据类型、引用数据类型和常量的使用方法。此外,还详细介绍了Java的运算符和表达式的使用。 第三部分是关于流程控制的内容,包括条件语句、循环语句和选择结构。通过学习这一部分,读者可以了解Java中的条件判断和循环执行的方法。 第四部分介绍了数组和方法的使用,包括数组的声明和初始化、数组的遍历和排序,以及方法的定义和调用。这些是Java程序设计中常用的基本工具。 第五部分是关于面向对象编程的内容,包括类的概念、对象的创建和使用,以及封装、继承和多态等面向对象的基本概念和技巧。 第六部分介绍了异常处理和文件操作的方法。Java提供了强大的异常处理机制,可以帮助程序员处理潜在的错误情况。同时,Java也提供了丰富的文件操作功能,可以方便地进行文件的读写操作。 最后一部分介绍了Java的图形用户界面和事件处理。这些内容可以帮助读者了解如何使用Java创建图形化界面,并且可以对用户的操作做出相应的响应。 总的来说,《Java语言程序设计(基础) PDF》是一本系统全面、内容详细的Java语言教材,适用于初学者和有一定编程基础的读者。通过阅读这本书,读者可以全面掌握Java语言的基本知识和编程技巧。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值