用户交互Scanner

我们可以用Scanner类来获取用户的输入

通过Scanner类的Next()与nextLine()方法获取输入的字符串,在读取前我们可以用hasNext()与hasNextLine()判断是否还有输入的数据

next():
  1. 一定要读取到有效字符后才可以结束输入
  2. 对输入有效字符之前遇到的空白,next()方法会自动将其去掉
  3. 只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符
  4. next()不能得到带有空格的字符串
//从键盘接收数据
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入内容:");
		if (sc.hasNext()){
            //用next接收
            String str = sc.next();
            System.out.println("你的内容为:"+str);
        }
        //凡是Io流的类,如果不关闭会一直占用资源,养成好习惯
        sc.close();
nextLine():
  1. 以Enter为结束符,也就是说nextLine()方法返回的是输入回车之前的所有字符
  2. 可以获得空白
//从键盘接收数据
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入内容:");
		if (sc.hasNextLine()){
            //用nextLine接收
            String str = sc.nextLine();
            System.out.println("你的内容为:"+str);
        }
        sc.close();
nextInt() 与 nextFloat()
int x=0;
         float f=0.0f;
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入整数:");
        if (scanner.hasNextInt()){
            x=scanner.nextInt();
            System.out.println("你输入的整数是"+x);
        }else {
            System.out.println("你输入的不是整数");
        }

        System.out.println("请输入小数");
        if (scanner.hasNextFloat()){
            f=scanner.nextFloat();
            System.out.println("你输入的小数是"+f);
        }else {
            System.out.println("你输入的不是小数");
        }

        scanner.close();
Scanner小案例

输入多个数字,并求其总和,每输入一个数字用回车确认,通过输入的非数字来结束输入并输出执行

public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        double sum = 0;
        int m = 0;
        while (sc.hasNextDouble()){
            double x = sc.nextDouble();
            m=m+1;
            sum = sum+x;
            System.out.println("你输入了低"+m+"个数据,他当前的结果是"+sum);
        }
        System.out.println("你输入的和为"+sum);
        System.out.println("你输入的平均值为"+sum/m);
    }

if选择结构

if单选择结构
if(布尔表达式){
            //如果布尔表达式为true将执行的语句
        }
if双选择结构
if(布尔表达式){
            //如果布尔表达式为true将执行的语句
        }else{
    		//如果布尔表达式为else将执行的语句
		}
if多选择结构
if(布尔表达式1){
            //如果布尔表达式为true将执行的语句
        }else if(布尔表达式2){
            //如果布尔表达式(布尔表达式2)为true将执行的语句
        }else if(布尔表达式3){
            //如果布尔表达式(布尔表达式3)为true将执行的语句
        }else{
    		//如果布尔表达式为else将执行的语句
		}
嵌套的if结构
if(布尔表达式1){
            //如果布尔表达式1为true将执行的语句
        	if(布尔表达式2){
    			//如果布尔表达式2为true将执行的语句
			}
        }
switch多选择结构
Scanner sc = new Scanner(System.in);
        String name = sc.nextLine();
            //JDK7的新特性 表达式可以用字符串  字符的本质还是数字
        // case穿透   switch 可以匹配一个具体的值
        switch (name) {
            case "张三":
                System.out.println("张三");
                break;//可选
            case "李四":
                System.out.println("李四");
                break;//可选
            case "王五":
                System.out.println("王五");
                break;//可选
            case "赵六":
                System.out.println("赵六");
                break;//可选
            default:
                System.out.println("你输入的名字不在列表内");
        }

循环结构

while 循环
while(布尔表达式){
                   //循环内容
                }

只要布尔值为true,循环就会一直循环下去

我们大多数情况是会让循环停下来的,我们需要一个表达式失效的方式来结束循环

循环条件为true就会造成无限循环【死循环】,会影响程序性能或造成程序卡死崩溃!我们正常业务中应该尽量避免死循环

//死循环
            while (true){
                //等待客户连接
                // 定时检查
                //.....
            }

思考:计算1+2+3+…+100=?

int i = 0;
                int sum = 0;
                while (i<=100){
                    sum = sum+i;
                    i++;
                }
                System.out.println(sum);//5050
do…while 循环
do{
                    //循环内容
                    //代码语句
                }while(布尔表达式)
while 和do…while区别
  • while是先判断后执行,do…while是先执行后判断
  • do…while总是保证循环体会被至少执行一次!
for 循环

for 循环最有效,最灵活的循环结构

for(初始化;布尔表达式;更新){
                    //代码语句
                }
                for (int i = 0; i < 100; i++) {
                    //代码语句
                }

练习 :

  1. 计算0到100之间的奇数和偶数的和
int oddSum = 0;
            int evenSum = 0;
            for (int i = 0; i <=100; i++) {
                if (i%2==0){//偶数
                    evenSum+=i;
                }else//奇数
                    oddSum+=i;
            }
            System.out.println("偶数的和:"+evenSum);
            System.out.println("奇数的和:"+oddSum);
  1. 用while或者for循环输出1-1000之间能被5整除的数,而且每行输出3个
for (int i = 0; i <=1000; i++) {
                if (i%5==0){
                    System.out.print(i+"\t");
                }
                if (i%15==0){
                    System.out.println();
                }
            }
  1. 打印九九乘法表
for (int i=0;i<10;i++){
                for (int j=1;j<=i;j++){
                    System.out.print(j+"*"+i+"="+(i*j)+"   ");
                }
                System.out.println();
            }

遍历数组元素

int[] number = {10,20,30,40,50};//定义数组
                //遍历数组元素1
                for (int x:number){
                    System.out.println(x);
                }
int[] number = {10,20,30,40,50};//定义数组
                //遍历数组元素2
                for (int i=0;i<number.length;i++){
                    System.out.println(number[i]);
                }

练习 :打印三角形

//打印三角形
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("*");
    }
    for (int j = 1; j <i; j++) {
        System.out.print("*");
    }
    System.out.println();
}
*
    ***
   *****
  *******
 *********