例题:流程控制语句

本次总结我将总结关于for循环语句的例题:

例1:

问题:如何用for循环来实现数字金字塔?

分析:

1.先输出每行的左边空格部分。

2.因为我们发现这些数字都是2的次幂,并且,左半边是2的次幂递增,右半边是2的次幂递减。所以,我们可以分成左半边和右半边打印。

3.因为输出的数字是整齐对称的,所以我们必须格式化输出数字。

代码实现:

class jinZiTa{
    public static void main(String args[]){    
        for(int i=1;i<=8;i++){              //控制输出的行数
            for(int j=32-i*4;j>0;j--){      //输出空格,输出的空格必须递减,这里设置为递减4                  
                System.out.print(" ");      //输出空格
            }
            for(int k=0;k<i;k++){            //输出左半边数字   
                System.out.printf("%4d",(int)Math.pow(2,k));  //%4d是指格式化输出整数       
            }                                          
            for(int n=i-2;n>=0;n--){         //输出右半边数字
                System.out.printf("%4d",(int)Math.pow(2,n));      
            }   
        System.out.println();                //每行输出完以后换行
        }
    }
}

例二:

问题:如何判断一个点在三角形内?

分析:

 

1.计算出AD边的直线方程,判断点是否在AD的下面,X坐标是否大于0,Y坐标是否大于0;

代码实现:

import java.util.Scanner;  //导入Scanner包,来实现用户输入步骤
class Text{
    public static void main(String[] args){
        Scanner scanner=new Scanner(System.in);
        //1.提示用户输入一个点的坐标
        System.out.print("请输入一个坐标:");
        double x=scanner.nextDouble();
        double y=scanner.nextDouble();
        //2.先大致判断一下坐标的范围
        //3.再精确的判断坐标的范围
        if(x>=0&&y>=0&&y<=-0.5*x+100){
            System.out.println("点在三角形内");
        }else{
            System.out.println("点在三角形外");
        }
    }
}

例三:

问题:如何判断一个小矩形在大矩形内?

                 让用户输入大小矩形的中心坐标以及宽高,然后判断小矩形是否在大矩形内。

分析:

       1.提示用户输入大矩形与小矩形的中心点坐标,宽和高。

        2.计算出小矩形满足在大矩形内,其终点坐标必须满足什么条件。

        3.若相交,若小矩形在大矩形外满足的条件。

        4.输出计结果。

经过分析,我们可以得到以下一个图:

 

   其中矩形ABCD为题中的大矩形,最小的矩形为题中的小矩形。

 1. 若小矩形满足在大矩形内,则其中心点的所有集合都在红色矩形内。

 2. 若小矩形满足在大矩形外,则其中心点的所有集合都在蓝色矩形外。

代码实现:

import java.util.Scanner;
class Text{
    public static void main(String[] args){
        Scanner scanner=new Scanner(System.in);
        //1.先输入大矩形的中心,宽和高
        System.out.print("请输入第1个矩形的信息:");
        double x1=scanner.nextDouble();
        double y1=scanner.nextDouble();
        double w1=scanner.nextDouble();
        double h1=scanner.nextDouble();
        //2.再输入小矩形的中心,宽和高
        System.out.print("请输入第2个矩形的信息:");
        double x2=scanner.nextDouble();
        double y2=scanner.nextDouble();
        double w2=scanner.nextDouble();
        double h2=scanner.nextDouble();
        //若小矩形在大矩形内,则其中心坐标的范围是
        double inXMin=x1-(w1-w2)/2;
        double inXMax=x1+(w1-w2)/2;
        double inYMin=y1-(h1-h2)/2;
        double inYMax=y1+(h1-h2)/2;
        //若小矩形在大矩形外,则其中心坐标的范围是
        double outXMin=x1-(w1+w2)/2;
        double outXMax=x1+(w1+w2)/2;
        double outYMin=y1-(h1+h2)/2;
        double outYMax=y1+(h1+h2)/2;
        //利用if-else判断
        if(x2>=inXMin&&x2<=inXMax&&y2>=inYMin&&y2<=inYMax){
            System.out.println("小矩形在大矩形里面!");
        }else if(x2<=outXMin||x2>=outXMax||y2<=outYMin||y2>=outYMax){
            System.out.println("小矩形在大矩形外面!");
        }else{                 
            System.out.println("小矩形和大矩形相交!");
        }
    }
}

 

 

 

 

 

 

 

 

 

 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值