Java基础之流程控制

1.用户交互scanner

在程序中,调用Scanner类可以让我们的操作和程序互动起来。

基本语法:

Scanner s = new Scanner(System.in);//创建一个扫描对象,用于接收键盘数据;

先创建一个扫描对象,然后通过Scanner类的next()方法与nextLine()方法获取输入的字符串,在读取前,需要使用hasNext()方法与hasNextLine()判断是否还有输入的数据。

next()方法与nextLine()方法:

  1. next():
    • 一定要读取到有效字符后才可以结束输入。
    • 对输入有效字符之前遇到的空白,next()方法会自动将其去掉。
    • 只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符。
    • next()不能得到带有空格的字符串。
Scanner scanner = new Scanner(System.in);
System.out.println("使用next方式接收:");
if (scanner.hasNext()){
    String str = scanner.next();
    System.out.println("输入的内容:"+str)
}
scanner.close();//I/O流的类如果不关闭会一直占用资源,因此一定要养成用完就关闭的好习惯。
  1. nextLine():
    • enter为结束符,也就是说nextLine()方法返回的 是输入回车之前的所有字符。
    • 可以获得空白。
Scanner scanner1 = new Scanner(System.in);
System.out.println("使用nextLine方式接收:");
if (scanner.hasNext()){
    String str = scanner1.nextLine();
    System.out.println("输入的内容:"+str)
}
scanner.close();

(注:使用Scanner类要记住在main方法之前导入包)

inport java.util.Scanner;

2.顺序结构

java基本结构就是顺序结构,除非特别声明,否则就会按照顺序一句一句执行。(顺序结构是最简单的算法结构)

语句与语句之间,框与框之间是按从上到下的顺序进行的,它是由若干个依次执行的处理步骤组成的,它是任何一个算法都离不开的一种基本算法结构。

3.if选择结构

  1. if选择结构:

    if(布尔值表达式){

    //如果布尔值表达式为true将执行的语句

    }

  2. if双选择结构:

    if(布尔表达式){

    //布尔表达式为true将执行的语句

    }else{

    //布尔表达式为true将执行的语句

    }

  3. if多选择结构

    if(布尔表达式1){

    //布尔表达式1为true将执行的语句

    }else if(布尔表达式2){

    //布尔表达式2为true将执行的语句

    }…{

    }else{

    //以上布尔表达式均为false将执行的语句

    }

  4. 嵌套的if结构

    就是讲if/else语句嵌套入另一个if语句中

    if(布尔表达式1){

    ​ //布尔表达式1true

    ​ if(布尔表达式2){

    ​ //布尔表达式2为true执行的代码
    }
    }

import java.util.Scanner;

public class test {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        System.out.println("请输入你的成绩:");
        Double z = scanner.nextDouble();//将用户输入的内容赋值给z
        
        if (z >= 60 && z <= 100) {//判断z是否在60-100
            if (z == 100) {//如果z=100输出成绩为A+
                System.out.println("A+");
            } else if (z >= 80) {//如果z >= 80输出成绩为A
                System.out.println("A");
            } else {//否则输出成绩为B
                System.out.println("B");
            }
        } else if (z > 0 && z < 60) {//判断是否在0-60范围内,若在则输出成绩为不及格
            System.out.println("没及格");
        } else {//若成绩不在60-100,也不在0-60之间,则输出警告字符串:输入成绩不合法
            System.out.println("输入成绩不合法");
            scanner.close();
        }
    }
}

3.switch多选择结构

String name = "兔叽";
switch(name){
    case "福腻":
        System.out.println("福腻");
        break;
    case "兔叽":
        System.out.println("兔叽");
        break;
    default;//若选择和变量都不匹配时执行的代码
        System.out.println("妹有zhei人儿!");
}
//结果输出为兔叽

switch选择结构会优先去匹配变量与选择,会从匹配行开始执行代码,直至遇到break或者代码执行完毕。

break是可以选择是否使用的,若不使用break,则代码会从匹配行执行到最后,若使用break终止代码,则代码将在break后停止执行。

4.循环结构

1.while循环(求1-100的和示例)

int i = 0;
int sum = 0;
while(i < 100){//只要布尔值表达式为true中间的内容就会一直循环
    i++;//循环内容
    sum += i;//循环内容
}
System.out.println(sum)

2.do…while循环

对于while循环语句,若布尔表达式为false则不能进入循环,而do…while循环则会至少进入一次循环。可用以下例子证明:

int a = 0;
while(a < 0){
    System.out.println(a);
    a++
}
System.out.println("==========================");//将结果分开
do{
    System.out.println("a");
    a++;
}while(a<0);
//while循环将不会输出任何结果,而下面do...while循环将输出0

3.for循环

for循环语句是支持迭代的一种通用结构,也是最有效最灵活的一种结构。for循环不像while循环与do…while循环循环次数未知,for循环的执行次数是在执行之前就确定。

for循环结构:

for(初始化;布尔值表达式;更新){

​ //代码语句

}

执行流程:初始化值声明一种类型,可以初始化一个或者多个循环控制变量,也可以是空语句,然后执行布尔值表达式。如果为true,循环体被执行。如果为false,循环终止然后执行循环体后面的语句。

执行一次循环后,更新循环控制变量(迭代因子控制U型你换变量的增减),并再次重复上述流程。

最简单的for循环代码:死循环

for(;;){
    
}//无初始值,无判断,是一个死循环,无论什么循环我们都要避免死循环。

for循环示例:打印乘法口诀表

int num01 = 0;
for(int i = 1;i <= 9;i++){//实现遍历1~9使得循环体都会执行9次
    for(int j=1;j <= i;j++){//实现遍历1~i次,这样就可以保证每一行只有i个数
        num01 = i*j;//将相乘的数字赋值给num01
        System.out.print(i+"*"+j+"="+num01+" ")//每相乘一次便输出一个结果,请一定注意这里使用的是“print”而不是“println”实现的是打印内容不换行
    }
    System.out.println()//每执行一次内部for循环就进行一次换行
}

总结循环:由上述问题我们要开始学会对程序问题进行拆分以乘法口诀表为例:

由于乘法口诀表示九行九列,因此我们首先使用一个for循环实现保证能够打印出九行内容,那么我们九列九行的内容相当于又是一次遍历,则想到嵌套循环,使得能够保证有九列内容。然后由于我们都知道乘法口诀只有一个下三角,所以我们要想办法去掉重复的数字,则想到外部循环的i是从1到9递增,而乘法口诀也是第几行只有几个数字,从而只要内部循环是<= i就可以实现,每一行都只有i个数字,即,每一行都只有i列,最终再调整输出内容的样式使其成为axb=c的格式即可。

4.拓展:增强for循环

格式:

for(声明语句:表达式){

​ //代码句子

}

声明语句:声明新的局部变量,该变量的类型个数必须和数组元素匹配。其作用域限定在循环语句中,其值与此数组元素的值相等。

表达式:表达式是要访问的数组名,或者是返回值为数组的方法。例

int[] numbers = {10,20,30,40,50};
    for(int x :numbers){
        System.out.println(x+" ");
    }

5.break与continue

1.break:break语句在任何循环语句的主体部分,均可用break控制循环的流程。break用于强行退出循环,不执行循环中剩余的语句。

(前面提到了switch中break的用法不再赘述)例:

int i = 0;
while(i < 100){
    i++;
    System.out.println(i);
    if(i == 30){
        break;
    }
}
//if语句使得当i==30时候执行break,则循环停止,输出结果只能为1~30。

2.continue:

continue语句在循环语句中,用于终止某次循环过程,即跳过循环体中尚未执行的语句,接着进行下一次是否执行循环语句。

示例:

int i = 0;
while(i < 100){
    j++;
    if(j%10 == 0){
        System.out.println();
        continue;
    }
    System.out.println(j);
}
//每遍历到10的整倍数都会终止此次循环,进行下一次循环。比起break相对较弱一点。

6.输出一个等腰三角形

最后当然离不开我们的三角形联系:

第一种思路:

 for (int i = 1; i <= 5; i++) {
            for (int j = 0; j <= 5 - i; j++) {
                System.out.print(" ");
            }
            for (int j = 1; j <= i; j++) {

                System.out.print("* ");
            }
            System.out.println();
        }

在这里插入图片描述

第一种思路是首先完成一个右直角三角形,然后输出时候把星星后面空一格,就完成了。

第二种思路:

 		for(int i = 0;i < 5;i++){
            for(int j = 5;j >= i;j--){
                System.out.print(" ");
            }
            for(int k = 1;k <= i;k++){
                System.out.print("*");
            }
            for(int l = 1;l < i;l++){
                System.out.print("*");
            }
            System.out.println();
         }

在这里插入图片描述

第二种思路则是采取了两个三角形相加的思路得到的,外层循环控制行数,第一个嵌套循环控制空格列数使得每一行的*确定,第二个嵌套循环控制左边的四行三角形,第三个嵌套循环控制右边的三行三角形,使其在第二行才开始输出。

结语

好了,那么流程控制小结就写到这里,主要就就是交互、选择结构、循环结构的学习。

以上的总结也还请各位小伙伴批评指正。

最后还是要感谢学相伴www.kuangstudy.com提供的学习视频,这是由两位大佬制作的自学网站,目前只有java的全套视频(可能部分没有),如果有兴趣的话,可自行尝试。反正我认为老师讲的还是非常好的,而且课程全部免费,并且还是按照学习路线排好顺序的,无论是对小白, 还是对知识需要补充的大佬,都是很友好的网站。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值