前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >java---程序结构(上)

java---程序结构(上)

作者头像
用户10787181
发布2023-10-17 09:09:58
2210
发布2023-10-17 09:09:58
举报
文章被收录于专栏:小龙学编程
4.1 结构的分类

1、顺序结构,程序从main方法开始从上到下,依次执行所有的语句。

2、选择结构(分支结构),程序从main方法开始从上到下这时有了选择的条件,让程序根据条件进行选择走哪条路,意思就是有的代码会执行,有的代码呢不会执行

3、循环结构, 程序从main方法开始从上到下这时有了循环的结构,让程序代码,在循环结构一直重复性的执行某一件事情,一直到条件判断结束

4.2 选择构造
if结构
代码语言:javascript
复制
语法:
说明:条件就是关系或逻辑表达式
if(条件){
	要执行的代码
}

执行流程: 进入if进行条件判断,如果条件为真,执行if后面大括号中的内容,执行完成后跳出if结构执行后面的操作,如果条件为假,直接执行后面的操作,不进入if结构

如下所示:

代码语言:javascript
复制
public class Demo8 {

    public static void main(String[] args) {

        //从键盘输入一个星期数,如果输入的是6就代表是星期6,这时我就去钓鱼

        Scanner input = new Scanner(System.in);

        System.out.println("请输入一个星期数");

        int week=input.nextInt();

        if(week==6){

            System.out.println("去钓鱼");

        }

        System.out.println("程序结束");

    }

}
问题:字符串的判断呢?

错误的判断方式:

代码语言:javascript
复制
public class Demo8 {

    public static void main(String[] args) {

        //从键盘输入一个星期数,如果输入的是6就代表是星期6,这时我就去钓鱼

        Scanner input = new Scanner(System.in);

        System.out.println("请输入一个星期数");

        String week=input.next();

        if(week=="星期六"){//判断是错误的,==不能用与字符串的判断

            System.out.println("去钓鱼");

        }

        System.out.println("程序结束");

    }

}

正确的判断方式:

public class Demo8 {

    public static void main(String[] args) {

        //从键盘输入一个星期数,如果输入的是6就代表是星期6,这时我就去钓鱼

        Scanner input = new Scanner(System.in);

        System.out.println("请输入一个星期数");

        String week=input.next();

        if("星期六".equals(week)){

            System.out.println("去钓鱼");

        }

        System.out.println("程序结束");

    }

}

main中定义的变量都叫局部变量,局变量都会在栈中开辟一块空间,这个空间如果是基本数据类型就直接存值,如果是引用 数据类型就存堆的地址。

所以,字符串要用equals()方法来进行等值判断,==作的是内存地址判断

注意equals的使用一般都两个字符串之间进行等值判断,要求常量型数据写在前面,变量型数据写在后面, 例如 "星期六".equals(week) 如果week为null 时程序不报错. null 空 没有 一般用于定义引用型变量时不知道给什么值的时候,等待程序运行过程中给定值。

新的问题:

代码语言:javascript
复制
public class Demo9 {

    public static void main(String[] args) {

        String str1="礼拜六";

        String str2="礼拜六";  //为同一对象,同一对象就是同一地址

        if(str1==str2){  //这又能判断正确

            System.out.println("去钓鱼");
        }
        System.out.println("程序结束");
    }
}
打印结果:
去钓鱼
程序结束
if...else结构
代码语言:javascript
复制
语法:
if(条件){
	//条件正确时执行的代码
}else{
	//条件错误时执行的代码
}

执行流程,根据if里的条件进行判断,条件为真时执行if后面括号中的代码,如果条件为假,执行else后面括号里的代码

代码语言:javascript
复制
public class Demo10 {

    public static void main(String[] args) {

        //查看这次张鹏的考试成绩,如果及格今晚张鹏就不上晚自习,如果不及格,今晚加班到十二点

        Scanner input =new Scanner(System.in);

        System.out.println("请输入张鹏的成绩:");

        double score=input.nextDouble();

        if(score>=60){

            System.out.println("今晚不上晚自习");

        }else{

            System.out.println("今天加班到十二点");

        }

        System.out.println("程序结束");

    }

}
代码语言:javascript
复制
public class Demo11 {

    public static void main(String[] args) {

        //查看这次张鹏的考试成绩,如果及格今晚张鹏就不上晚自习,如果不及格,今晚加班到十二点

        //正确的成绩是0-100分  才参与判断,不然直接打印 "输入的数据错误"

        //键盘输入这就是第一步,必须这样写

        Scanner input =new Scanner(System.in);

        //键盘输入前,给出提示  System.out.println 打印语句

        System.out.println("请输入张鹏的成绩:");


        //input.nextDouble()从键盘输入小数并存放到变量中score

        double score=input.nextDouble();

        //score>=0 && score<=100  数据区间的判断

        if(score>=0 && score<=100){

            if(score>=60){

                System.out.println("不上晚自习");

            }else{

                System.out.println("今晚加班到十二点");

            }

        }else{

            System.out.println("输入的数据错误");

        }

    }

}
代码语言:javascript
复制
public class Demo12 {

    public static void main(String[] args) {

        //查看这次张鹏的考试成绩,如果及格今晚张鹏就不上晚自习,如果不及格,今晚加班到十二点

        //正确的成绩是0-100分  才参与判断,不然直接打印 "输入的数据错误", 如果在输入数据的时候人家故意输入字符串而不是小数,需要进行拦截

        Scanner input = new Scanner(System.in);

        System.out.println("请输入张鹏的成绩:");

        /*

        	输入一个数据进来,先进行判断当前输入的数据是不是判断的类型,如果是结果true,如果不是结果是false

        */

        if(input.hasNextDouble()){  

            System.out.println("输入的是小数");

            /*

            这里会将上面hasNextDouble()输入的值直接存入到变量中,不再进行二次输入

            */

            double score = input.nextDouble();  
            if(score>=0 && score<=100){

                if(score>=60){

                    System.out.println("不上晚自习");

                }else{

                    System.out.println("今晚加班到十二点");

                }

            }else{

                System.out.println("输入的数据错误");

            }

        }else{

            System.out.println("输入的不是小数");

        }


    }

}


if结构可以写任何代码,可以嵌套任意层if

如果判断输入的类型是不是整型 input.hasNextInt()来判断
if...else if....else if..........else....... 多重if
代码语言:javascript
复制
语法:
if(条件1){
		//代码块1
}else if(条件2){
	//代码2
}else if(条件3){
	//代码块3
}....
else if(条件n){
	//代码块n
}else{
	//代码块else
}[else 可选]

判断条件1,条件为真,执行代码块1,否则判断条件2,条件2为真,执行代码块2,否则继续判断下面的条件,如果所有的条件都不满足时执行else中的操作

代码语言:javascript
复制
import java.util.Scanner;


public class Demo13 {

    public static void main(String[] args) {

        //输入张鹏的语文成绩,90-100 A  80-89 B  70-79 C  60-69 D 60以下 E 没有在这区间内的数据判定数据错误

        Scanner input = new Scanner(System.in);

        System.out.println("请输入张鹏的语文成绩:");

        if(input.hasNextInt()) {

            int score = input.nextInt();


            if(score>=90 && score<=100){

                System.out.println("A");

            }else if(score>=80 && score<=89){

                System.out.println("B");

            }else if(score>=70&& score<=79){

                System.out.println("C");

            }else if(score>=60&&score<=69){

                System.out.println("D");

            }else if(score>=0 && score<=59){

                System.out.println("E");

            }else {

                System.out.println("不是有效范围的数据");

            }


        }else{

            System.out.println("输入的数据不是整数");

        }


    }

}

上下条件具有一定的关联性例子:

代码语言:javascript
复制
public class Demo14 {


    public static void main(String[] args) {

        //输入张鹏的语文成绩,90-100 A  80-89 B  70-79 C  60-69 D 60以下 E 没有在这区间内的数据判定数据错误

        Scanner input = new Scanner(System.in);

        System.out.println("请输入张鹏的语文成绩:");

        if(input.hasNextInt()) {

            int score = input.nextInt();

            if(score<0 || score>100){

                System.out.println("不是有效范围的数据");

            }else if(score>=90){

                System.out.println("B");

            }else if(score>=80){

                System.out.println("A");

            }else if(score>=70){

                System.out.println("C");

            }else if(score>=60){

                System.out.println("D");

            }else if(score>=0){

                System.out.println("E");

            }


        }else{

            System.out.println("输入的数据不是整数");

        }

    }

}

第一,这里的区间判断不需要后面的条件,因为上一个条件已经帮下一个条件限定了区间范围

第二、每一个条件必须按照排定的顺序编写,不能随意差位,不然会影响结果的执行

switch结构
代码语言:javascript
复制
switch(整数变量|字符变量|字符串变量){
		case 常量值1:
				//代码块1
				break;
		case 常量值2:
					//代码块2
				break;
		case 常量值3:
				//代码块3
				break;
		....
		default:
			//上面所有的case都没有相等的值时,执行
			break;
}

switch是通过case 后指定的常量值与switch括号中的变量进行等值对比,能对比上(也就是相等)就进入到对应的case项中执行这个case项与最近一个break;之间的代码,如果一个case项缺少break;那么代码的执行,执行完了当前case项中的代码后,会串入下一个case项进行执行。 break;就是跳出switch结构的代码,遇见break,switch就结束。

代码语言:javascript
复制
import java.util.Scanner;


public class Main6 {

 public static void main(String[] args) {

     //switch可以替换多重if中等值判断的情况

     Scanner input = new Scanner(System.in);

     System.out.println("请输入第一个数:");

     int week=input.nextInt();

     switch (week){

         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;

         case 7:

             System.out.println("星期天");

             break;

         default:

             System.out.println("输入错误");

             break;

     }

 }

}

switch只能用于等值判断,多重if中等值判断的情况可以用switch替换,但是switch只能判断byte ,short,long,int,char,String类型的数据

代码语言:javascript
复制
问题:输入一个月份,输出这个月有多少天?默认二月只有28
import java.util.Scanner;


public class Main8 {

 public static void main(String[] args) {

     Scanner input = new Scanner(System.in);

     System.out.println("请输入一个月份:");

     int month=input.nextInt();

     switch (month){

         case 1:

         case 3:

         case 5:

         case 7:

         case 8:

         case 10:

         case 12:

             System.out.println(31);

             break;

         case 2:

             System.out.println(28);

             break;

         case 4:

         case 6:

         case 9:

         case 11:

             System.out.println(30);

             break;

         default:

             System.out.println("输入错误");

             break;

     }

 }

}

如果要加上平年润年的判断 平年2月是28天,润年2月是29天

判断润年的条件是 year%4==0&&year%100!=0||year%400==0

代码语言:javascript
复制
import java.util.Scanner;


public class Main8 {

    public static void main(String[] args) {

        Scanner input = new Scanner(System.in);

        System.out.println("请输入一个年份:");

        int year=input.nextInt();

        System.out.println("请输入一个月份:");

        int month=input.nextInt();

        switch (month){

            case 1:

            case 3:

            case 5:

            case 7:

            case 8:

            case 10:

            case 12:

                System.out.println(31);

                break;

            case 2:

                if(year%4==0&&year%100!=0||year%400==0){

                    System.out.println(29);

                }else {

                    System.out.println(28);

                }

                break;

            case 4:

            case 6:

            case 9:

            case 11:

                System.out.println(30);

                break;

            default:

                System.out.println("输入错误");

                break;

        }

    }

}

太累了兄弟们,一个小时弄的,祈求大家给个赞!谢谢

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-09-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 4.1 结构的分类
  • 4.2 选择构造
  • if结构
    • 问题:字符串的判断呢?
    • if...else结构
    • if...else if....else if..........else....... 多重if
    • switch结构
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档