Java流程控制

用户交互Scannar

我们可以用Scanner类来获取用户的输入
import java.util.Scanner:导入工具包
//创建一个扫描器对象,用于接收键盘数据
Scanner s = new Scanner(System.in)
通过Scanner类的next()与nextLine()方法获取输入的字符串,在读取前我们一般需要使用hasNext()与hasNextLine()判断是否还有输入的数据。
next():

  1. 一定要读取到有效字符后才可以结束输入
  2. 对输入有效字符之前遇到的空白,next()方法会自动将其去掉
  3. 只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符
  4. next()不能得到带有空格的字符串
    nextLine():
  5. 以Enter为结束符,也就是说nextLine()方法返回的是输入回车之前的所有字符
  6. 可以获得空白
    **
//使用next方法接收
if(scanner.hasNext()){
//使用next方法接收
String str = scanner.next();//这句执行完程序会等待用户输入
System.out.println("输出的内容为: "+str);
}
//凡是属于IO流的类最好用完就关掉,不然会一直占用资源
scanner.close();//一定要记得关闭

**
练习:输出一组数的和,平均数

顺序结构

从上到下的顺序进行

选择结构

  1. if单选择结构
    if(布尔表达式){如果布尔表达式为true则执行 }
    方法:equals判断字符串是否相等,因为== 不仅判断内容还会判断地址,所以不用==判断字符串。
  2. if双选择结构
    if(){}
    else{}
  3. if多选择结构
    if(){}else if(){}else{}
    只要其中一个为true则直接跳过其他的
  4. 嵌套的if结构
    if(){
    if(){

}
}
5. switch多选择结构
switch case 语句判断一个变量与一系列值中某个值是否相等,每一个值成为分支
变量类型:byte,short,int,char,如果是String类型case标签必须为字符串常量或者字面量
case穿透,就是把代码通过hash解码,java-class(字节码),反编译就是把class编译成Java让人看懂。

switch(){
 case value:
     sout(输出)
    break;(可选)
 case value:
    break;
  default//可选
}

循环结构

  1. while循环
    while(布尔表达式){
    //循环内容
    }
    1. 只要布尔表达式为true,就是一直循环
    2. 大多时候我们需要一个失效的条件,使其跳出循环。
    3. 少部分需要一直响应,比如服务器的请求响应监听
  2. do while循环
    对于do while语句而言,至少会执行一次
    do{
    }while(布尔表达式)
    区别:while先判断后执行,do while是先执行后判断所以至少会执行一次。
  3. for循环

练习(for):

  1. 计算0到100之间的奇数和偶数的和
package com.xin.Scanner;

public class ForDemo5 {
    public static void main(String[] args) {
        int b = 0;
        int c = 0;
        
        // 初始化条件判断,迭代
        for (int i = 1; i <= 100; i++) {
            if (i % 2 == 0) {
                b = b + i;

            } else {
                c = c + i;
            }
                  System.out.println(i);//在循环里定义的变量,不能在循环外面输出
        }
        System.out.println("奇数和是:" + c + "\n偶数和是: " + b);
     
    }

}
  1. 用while或者for循环输出1-1000之间能被5整除的数字,并每行输出三个
//用定义计数器的方式换行,也可以尝试用(i%(5*3)),打印三个数字之后换行,一样的道理。
package com.xin.Scanner;

public class ForDemo6 {

    public static void main(String[] args) {
        int count = 0;
        for (int i = 1; i <= 1000; i++) {

            if (i % 5 == 0) {
//用制表符让打印出来的更好看,注意println会自动换行,这里要用print
                System.out.print(i + "\t");
                count++;
                if (count % 3 == 0) {
//换行还可以用System.out.print("\n");
                    System.out.println();
                }
            }
        }

    }

}
  1. 打印九九乘法表
package com.xin.Scanner;

public class ForDemo7 {
    public static void main(String[] args) {
        for (int i = 1; i <= 9; i++) {
//注意n<=i可以避免打出相同的式子
            for (int n = 1; n <= i; n++) {
                int m = i * n;
//注意顺序,小的在前面
                System.out.print(n + "*" + i + "=" + m + "\t");
            }

            System.out.println();
        }
    }
}
  1. 增强for循环
    针对数字,字符串的循环
package com.xin.Scanner;

public class ForDemo8 {
    public static void main(String[] args) {
        int[] numbers = { 10, 20, 30, 40, 50 };
        // 遍历数组的元素
        for (int x : numbers) {
            System.out.println(x);
        }
--------------------------------------
for(int i=0;i<5;i++){
System.out.println(number[i])
}//这个得到的结果是一样的
    }

}

break&contiune&goto

break可以在任何循环语句的主题部分,用于强制退出循环,不执行循环中剩余的语句。
continue语句用于终止某次循环过程,即跳出循环体中尚未执行的语句,接着进行下一次是否执行循环的判定。

//break
package com.xin.xunhuan;

public class ContinueDemo {
    public static void main(String[] args) {
        int a = 0;
        while (a <= 100) {
            System.out.print(a);
            a++;
            if (a % 10 == 0) {
                System.out.println();
                break;
            }

        }
    }

}
//0123456789
package com.xin.xunhuan;

public class ContinueDemo {
    public static void main(String[] args) {
        int a = 0;
        while (a <= 100) {

            a++;
            if (a % 10 == 0) {
                System.out.println();
                continue;
            }
            System.out.print(a);
        }
    }

}
//123456789
//111213141516171819
//212223242526272829
//313233343536373839
//414243444546474849
//515253545556575859
//616263646566676869
//717273747576777879
//818283848586878889
//919293949596979899
//101

goto

带标签的break和continue就是goto的影子
标签就是指后面跟一个冒号的标识符,例如:label:
对Java来说唯一用到标签的地方就是循环语句之前

练习:打印三角形

package com.xin.xunhuan;

public class TriangleDemo {
    public static void main(String[] args) {
//打印五行
        for (int i = 1; i <= 5; i++) {
//第一行前面要四个空格,以此类推
            for (int j = 5; j > i; j--) {
                System.out.print(" ");
            }
//第几行就打印几个*
            for (int j = 1; j <= i; j++) {
                System.out.print("*");
            }
//上面循环结束应该是右边对齐的三角形,加一个循环补齐,第一行补0个,第二行补一个,以此类推
            for (int j = 1; j < i; j++) {
                System.out.print("*");
            }
            System.out.println();
        }
    }

}
//倒三角
package com.xin.xunhuan;

public class TriangleDemo {
    public static void main(String[] args) {
        for (int i = 5; i >= 1; i--) {
//空格递增
            for (int j = 5; j > i; j--) {
                System.out.print(" ");
            }
//第一行输出5个,然后递减
            for (int j = 1; j <= i; j++) {
                System.out.print("*");
            }
//和上一个循环的区别是第一行只要补4个,然后递减
            for (int j = 1; j < i; j++) {
                System.out.print("*");
            }

            System.out.println();
        }
    }

}
posted @ 2025-07-30 17:31  xixixixin  阅读(11)  评论(0)    收藏  举报