交互

scanner对象

Java.util.Scanner是Java5的新特征,我们可以运用Scanner类来获取用户的输入

基本语法:

Scanner s=new Scanner(System.in);

next() 与nextLine()来获取字符

区别和特点:

next():

1、一定要读取到有效字符后才可以结束输入。
◆2、对输入有效字符之前遇到的空白,next()方法会自动将其去掉。
◆3、只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符。
◆4、next()不能得到带有空格的字符串。

package com.yanna.Scanner;
import java.util.Scanner;
public class Demo01 {
    public static void main(String[] args) {
        //创建一个扫描器的对象,用于导入搜键盘数据
        Scanner scanner =new Scanner(System.in);
        System.out.println("使用next方式接收:");

        //判断用户札输入字符串
        if(scanner.hasNext()){
            //使用next方式接收
            String str= scanner.next();
            System.out.println("输出端内容:"+str);
        }
        //凡是属于IO流的类如果不关闭会一直占用资源
        scanner.close();
    }
}

nextLine():

◆1、以Enter为结束符,也就是说nextLine()方法返回的是输入回车之前的所有字符。
◆2、可以获得空白。

package com.yanna.Scanner;

import java.util.Scanner;

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

        System.out.println("使用nextLine方式接收:");
        //判断是否还有输入
        if (scanner.hasNextLine()){
                String str=scanner.nextLine();
            System.out.println("输出的内容为:"+str);
        }
        scanner.close();
    }
}

整数和小数

package com.yanna.Scanner;

import java.util.Scanner;

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

        //从键盘接收数据
        int i=0;
        float f=0.0f;

        System.out.println("请输入整数");
        if(scanner.hasNextInt()){
            i=scanner.nextInt();
            System.out.println("整数数据:"+i);
        }else {
            System.out.println("输入的不是整数数据!");
        }

        System.out.println("请输入小数:");

        //如果。。。那么。。。
        if(scanner.hasNextFloat()){
            f=scanner.nextFloat();
            System.out.println("小数数据:"+f);
        }else {
            System.out.println("输入的不是小数数据!");
        }

    }
}

交互范例

package com.yanna.Scanner;

import java.util.Scanner;

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

        //和
        double sum=0;
        //计算输入了多少个数字
        int m =0;

        //通过循环判断是否还有输入
        while(scanner.hasNextDouble()){
            double x= scanner.nextDouble();
            //
            m=m+1;//m++
            sum=sum+x;
            System.out.println("你输入了第"+m+"个数据,然后当前结果sum="+sum);
        }
        System.out.println(m+"个数的和为:"+m);
        System.out.println(m+"个数的平均值是:"+(sum/m));

        scanner.close();
    }
}

流程控制

顺序结构

Java的基本结构就是顺序结构

是任何一个算法离不开的基本结构

package com.yanna.struct;

public class Demo01 {
    public static void main(String[] args) {
        System.out.println("hello1");
        System.out.println("hello2");
        System.out.println("hello3");
        System.out.println("hello4");
        System.out.println("hello5");
    }
}

选择结构

if单选择结构

if(布尔表达式){
true就执行;
}
package com.yanna.struct;

import java.util.Scanner;

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

        System.out.println("请输入:");
        String s= scanner.nextLine();

        //equals:判断字符串是否相等
        if(s.equals("hello")){
            System.out.println(s);
        }
        System.out.println("end");
        scanner.close();
    }
}

if双选择结构

区别于上述即有else

package com.yanna.struct;

import java.util.Scanner;

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

        System.out.println("请输入:");

        int score =scanner.nextInt();

        if(score<60){
            System.out.println("不及格");
        }else{
            System.out.println("及格");
        }
        scanner.close();
    }
}

if多选择结构

else if

package com.yanna.struct;

import java.util.Scanner;

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

        System.out.println("请输入:");

        int score =scanner.nextInt();

        if(score>60&&score!=100){
            System.out.println("及格");
        }
        else if(score==100){
            System.out.println("恭喜满分");
        }else{
            System.out.println("不及格");
        }
        scanner.close();
    }
}

switch多选择结构

switch(expression){
case value :
//语句
break;//可选
case value :
//语句
break;//可选
//你可以有任意数量的case语句
default ://可选
//语句

}
package com.yanna.struct;

public class switchDemo01 {
    public static void main(String[] args) {
        //case穿透,要加break
        char grade ='D';

        switch(grade){
            case 'A':
                System.out.println("优秀");
                break;
            case'B':
                System.out.println("良好");
                break;
            case'C':
                System.out.println("come on,baby");
                break;
            default:
                System.out.println("未知");

        }


    }
}

现在Switch可以支持String类型的比较了

package com.yanna.struct;

public class switchDemo02 {
    public static void main(String[] args) {
        String name="yanna";
//jdk7的新属性,表达式结果可以使字符串!!!
//字符的本质还是数字 反编译: Java----class(字节码文件)----反编译(IDEA)
        switch(name){
            case"yana":
                System.out.println("yana");
                break;
            case"yanna":
                System.out.println("yanna");
                break;
            default:
                System.out.println("nonono");
        }
    }
}

循环结构

  1. while

  2. do while

  3. for

while循环

大多数情况是为了让循环停止下来,就需要一个把让表达式失效的方式来结束循环

package com.yanna.struct;

public class whileDemo01 {
    public static void main(String[] args) {

        //输出1~100
        int i =0;

        while(i<100){//避免死循环
            i++;
            System.out.println(i);

        }

    }
}

计算累加:

package com.yanna.struct;

public class whileDemo01 {
    public static void main(String[] args) {

        //输出1~100
        int i =0;
        int sum =0;
        while(i<101){//避免死循环


            sum=sum+i;
            i++;

        }
        System.out.println(sum);//注意最后输出语句的位置
    }
}

◆对于while语句而言,如果不满足条件,则不能进入循环。但有时候我们需要即使不满足条件,
也至少执行一次。
◆do ... while 循环和 while循环相似,不同的是,do ... while循环至少会执行一次。

do {

}while(布尔表达式);

//代码语句

◆While和do-While的区别:

while先判断后执行。dowhile是先执行后判断!
◆Do ... while总是保证循环体会被至少执行一次!这是他们的主要差别。

package com.yanna.struct;

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

package com.yanna.struct;

public class doWhileDemo03 {
    public static void main(String[] args) {
        int a=0;
        while(a!=0);{
            System.out.println(a);
            a++;
        }
        System.out.println("===========");
        do{
            System.out.println(a);
            a++;
        }while(a<0);
    }
}

For循环

◆for循环语句是支持迭代的一种通用结构,是最有效、最灵活的循环结构

迭代循环的for头快捷键:

100.for

package com.yanna.struct;

public class forDemo01 {
    public static void main(String[] args) {
        int a=1;
        while (a<=100){
            System.out.println(a);
            a+=2;
        }
        System.out.println(a);

        //初始化,条件判断,迭代
        for(int i=1;i<=100;i++){
            System.out.println(i);
        }


        System.out.println("for循环结束");
        /*
        关于 for 循环有以下几点说明:

        最先执行初始化步骤。可以声明一种类型,但可初始化一个或多个循环控制变量,也可以是空语句。
        然后,检测布尔表达式的值。如果为true,循环体被执行。如果为false,循环终止,开始执行循环体后面的语句。
        执行一次循环后,更新循环控制变量(迭代因子控制循环变量的增减)。
        再次检测布尔表达式。循环执行上面的过程。
         */
        
    }

}