JAVA-流程控制语句

流程控制语句

流程控制语句分为以下三个大类:

  • 顺序结构
  • 选择结构
  • 循环结构

顺序结构

代码从主函数开始逐行向下运行

例如下面这个程序

public class Demo01_01{
    public static void main(String[] args){
        System.out.println("HelloWorld");
    }
}

选择结构

选择结构分为两大类

  • if语句

if语句基本格式

单if形式

if(条件表达式){

      当条件为true时执行的代码;

}else{

      当条件为false时执行的代码;

}

class Demo{
    public static void mian(String[] args){
        int a=1;
        int b=2;
        if(a>b){
            System.out.println(a);
        }else{
            System.out.println(b);
        }
    }
}

嵌套if-else形式

if(条件1){

      条件1为true时执行的代码;

      if(条件2){

          条件2为true时执行的代码;

      }else{

          条件2为false时执行的代码;

      }

}else{

      条件1为false时执行的代码;

}

 

if-else-if形式

if(条件1){

条件1为true时执行的代码;

}else if(条件2){

条件2为true时执行的代码;

}else{

条件1、2为false时执行的代码;

}

class Demo{
    public static void mian(String[] args){
        int a=1;
        int b=1;
        if(a>b){
            System.out.println(a);
        }else if(a<b){
            System.out.println(b);
        }else{
            System.out.println("无");
        }
    }
}
  • switch语句(一般在多选情况下用)

switch语句形式

switch(变量){

    case 值1:

          执行语句1;

          break;

    case 值2:

          执行语句2;

          break;

    case 值3:

          执行语句3;

          break;

    ........

    deafult:

          执行语句n;

          break;

}

class Demo{
    public static void main(String[] args){
        int a=2;
        switch(a){
            case 0: 
                System.out.printf("你"); 
                break;
            case 1:
                System.out.printf("我");
                break;
            case 2:
                System.out.printf("他");
                break;
        } 
    }
}

循环结构(主要解决重复性执行的代码)

  • 已知重复次数的循环-->for循环
  • 不知重复次数但是已知结束条件的循环-->while循环

循环的四要素

1.循环初始化

2.循环继续条件

3.循环体

4.循环的周期,步长,间距

  • for循环

for(1循环的初始化 ;  2循环的继续条件 ; 4循环的步长 ){

         3循环体

}

class Test02{
    public static void main(String[] args){
        for(int i=1;i<=8;i++){
            System.out.print("*");
        }
    }
}
  • while循环

第一种格式

1.循环的初始化

while(2.循环的继续条件){

    3.循环体

    4.循环的步长

}

比如

class Demo{
    public static void main(String[] args){
        int i=1;
        int sum=0;
        while(i<10){
            sum=sum+i;
            i++;
            
        }
        System.out.println(sum);
    }
}

第二种格式

while(true){

     1.循环初始化

     2.循环的继续条件

     3.循环体

     4.循环的步长

}

注意:这么写while循环的话,逻辑上比较顺畅的,但是有危险,在于本身是死循环,需要在合适的时候用break关键字跳出循环

比如

import java.util.*;
class Demo{
    public static void main(String[] args){
        Scanner s=new Scanner(System.in);
        //输入数字
        System.out.print("输入一个数字:");
        int n=s.nextInt();
        while(true){
            for(int i=2;i<=n;i++){
                if(n%i==0){
                    System.out.print(i+" ");
                    n=n/i;
                    break;
                }
            }
            if(n==1){
                break;
            }
        }
    }
}

例题

1.1

import java.util.*;
class Demo01{
    public static void main (String[] args){
        //提示输入a,b,c的值
        System.out.print("请输入a,b,c的值:");
        Scanner s=new Scanner(System.in);
        double a=s.nextDouble();
        double b=s.nextDouble();
        double c=s.nextDouble();
        //delt公式
        double delt=b*b-4*a*c;
        if(delt>0){
            //当delt>0时的两个解
            double r1=(-b+Math.sqrt(delt))/(2*a);
            double r2=(-b-Math.sqrt(delt))/(2*a);
            System.out.printf("r1=%.2f,r2=%.2f",r1,r2);
        }else if(delt==0){
            //当delt=0时的解
            double r=-b/(2*a);
            System.out.printf("r=%.2f",r);
        }else{
            //当delt=<0时的解
            System.out.println("无实数解!");
        }
    }
}

1.2

import java.util.*;
class Demo03{
    public static void main(String[] args){
        Scanner s=new Scanner(System.in);
        //输入今天是周几
        System.out.print("今天是周几:");
        int today=s.nextInt();
        //输入未来的几天
        System.out.print("未来的几天:");
        int future=s.nextInt();
        //未来几天是周几的算法
        int futureDay=(today+future)%7;

        String todayStr="";
        String futureDayStr="";

        if(today==0){
            todayStr="周日";
        }else if(today==1){
            todayStr="周一";
        }else if(today==2){
            todayStr="周二";
        }else if(today==3){
            todayStr="周三";
        }else if(today==4){
            todayStr="周四";
        }else if(today==5){
            todayStr="周五";
        }else if(today==6){
            todayStr="周六";
        }
        if(futureDay==0){
            futureDayStr="周日";
        }else if(futureDay==1){
            futureDayStr="周一";
        }else if(futureDay==2){
            futureDayStr="周二";
        }else if(futureDay==3){
            futureDayStr="周三";
        }else if(futureDay==4){
            futureDayStr="周四";
        }else if(futureDay==5){
            futureDayStr="周五";
        }else if(futureDay==6){
            futureDayStr="周六";
        }
        System.out.println("今天是"+ todayStr+"未来几天是"+futureDayStr);
    }
}

1.3

import java.util.*;
class Demo04{
    public static void main(String[] args){
        Scanner s=new Scanner(System.in);
        //输入数字
        System.out.println("请输入一个数字:");
        int num=s.nextInt();
        int temp=num;
        //拼接出该数的反序
        int sum=0;
        sum=sum*10+num%10;
        num/=10;
        sum=sum*10+num%10;
        num/=10;
        sum=sum*10+num%10;
        num/=10;
        if(sum==temp){
            System.out.println("是回文");
        }else{
            System.out.println("不是回文数");
        }
    }
    
}

1.4

import java.util.*;
class Demo06{
    public static void main(String[] args){
        //1.输入数字
        System.out.print("请输入一个数字:");
        Scanner s=new Scanner(System.in);
        int user=s.nextInt();
        //2.产生随机数
        int com=(int)(Math.random()*3);

        String userStr="";
        String comStr="";
        switch(user){
            case 0://if user==0
                userStr="剪刀";
                break;
            case 1:
                userStr="石头";
                break;
            case 2:
                userStr="布";
                break;

        }
        switch(com){
            case 0://if user==0
                comStr="剪刀";
                break;
            case 1:
                comStr="石头";
                break;
            case 2:
                comStr="布";
                break;

        }
        //3.打印结果
        if(user==com){
            System.out.printf("用户是%s,电脑是%s,平局",userStr,comStr);
        }else if(user==0&&com==2||user==1&&com==0||user==2&&com==1){
            System.out.printf("用户是%s,电脑是%s,用户赢",userStr,comStr);
        }else{
            System.out.printf("用户是%s,电脑是%s,用户输",userStr,comStr);
        }

    }
}

1.5

import java.util.*;
class Demo07{
    public static void main (String[] args){
        Scanner input = new Scanner(System.in);
        //输入年份
        System.out.print("输入年份:");
        int year = input.nextInt();
        //输入月份
        System.out.print("输入月份:");
        int month = input.nextInt();
        //输入日期
        System.out.print("输入月份的日期:");
        int day = input.nextInt();
         

        //对特殊的1月和2月做处理
        if (month == 1||month == 2) {
            month = month+12;
            year -= 1;
            
        }
        int h = (day + 26 * (month + 1) / 10 + (year % 100) +(year % 100) / 4 + (year / 100) / 4 + (year / 100) * 5) % 7;
        
        switch(h) {
            case 0:
                System.out.println("周六"); 
                break;
            case 1:
                System.out.println("周日"); 
                break;
            case 2:
                System.out.println("周一"); 
                break;
            case 3:
                System.out.println("周二");
                break;
            case 4:
                System.out.println("周三"); 
                break;
            case 5:
                System.out.println("周四"); 
                break;
            case 6:
                System.out.println("周五"); 
                break;
        }
    }
}

1.6

import java.util.*;
class Demo08{
    public static void main(String[] args){
        //1.输入点的坐标
        System.out.print("请输入坐标点:");
        Scanner s=new Scanner(System.in);
        double x=s.nextDouble();
        double y=s.nextDouble();
        
        double xo=0;
        double yo=0;
        double radius=10;
        //2.计算点到圆心之间的距离
        double distance=Math.sqrt(Math.pow(x-xo,2)+Math.pow(y-yo,2));
        //3.判断距离和半径之间的关系
        if(distance>radius){
            //距离>半径 点在圆外
            System.out.println("点在圆外");
        }else if(distance==radius){
            //距离=半径 点在圆上
            System.out.println("点在圆上");
        }else{
            //距离<半径 点在圆内
            System.out.println("点在圆内");
        }

    }

1.7

import java.util.Scanner;
class Demo10{
    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(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.8

import java.util.Scanner;
public class Demo14 {
    public static void main(String[] args){
        Scanner scanner=new Scanner(System.in);
        //确定行数
        System.out.print("请输入行数:");
        int line=scanner.nextInt();
        //打印行数
        for(int i=1;i<=line;i++){
            //打印空格
            for(int k=1;k<=(line-i);k++){
                if(line<10){
                    System.out.print("  ");
                }else{
                    System.out.print("   ");
                }
            }
            //打印数字
            for(int x=-(i-1);x<=i-1;x++){
                if(line<10){
                    System.out.printf("%-2d",Math.abs(x)+1);
                }else{
                    System.out.printf("%-3d",Math.abs(x)+1);
                }
            }
            //每行打印完换行
            System.out.println();
        }
    }
}

1.9

import java.util.*;
class Demo{
    public static void main(String[] args){
        Scanner s=new Scanner(System.in);
        
        double sum=0;//总和
        int pos=0;//正数的个数
        int neg=0;//负数的个数
        System.out.print("请输入若干数字:");
        while(true){//进循环
            int num=s.nextInt();
            if(num!=0){
                sum+=num;
                if(num>0){
                    pos++;
                }else{
                    neg++;
                }
            }else{
                break;//跳出当前循环
            }
        }
        if(pos+neg==0){
            System.out.println("没有其他数字输入,只有0");
        }else{
            System.out.println("正数的个数"+pos);
            System.out.println("负数的个数"+neg);
            System.out.println("总和"+sum);
        }
    }
}

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值