用户交互,顺序结构,选择结构

用户交互Scanner

  • Java提供了一个工具类用于获取用户的输入。java.util.Scanner是Java5的新特征,我们可以通过Scanner类来获取用户的输入

  • 基本语法

  Scanner s = new Scanner(System.in);
  • 通过Scanner类的next()与nextLine()方法获取输入的字符串,在读取前我们一般需要使用hasNext()与hasNextLine()判断是否还有输入的数据

  • next():

    • 一定要读取到有效字符后才可以结束输入

    • 对输入有效字符之前遇到的空白,next()方法会自动将其去掉

    • 只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符

    • next()不能得到带有空格的字符串

  • nextLine():

    • 以Enter为结束符,也就是说nextLine()方法返回的是输入回车之前的所有字符

    • 可以获得空白

  import java.util.Scanner;
?
public class Scan {
   public static void main(String[] args) {
       //创建一个扫描器对象,用于接收键盘数据
       Scanner s = new Scanner(System.in);
       System.out.println("使用next方式接收:"); //输入hello world
       //s.hasNext() 判断用户有没有输入字符串 如果没有,开始键盘录入
       if(s.hasNext()){
           //使用next方法接收
           String str = s.next();
           System.out.println("输入的内容为:"+str); //打印hello
      }
?
?
       System.out.println("==========================");
       Scanner s2 = new Scanner(System.in);
       System.out.println("使用nextLine方式接收:"); //输入hello world
       if(s2.hasNextLine()){
           String str2 = s2.nextLine();
           System.out.println("输入的内容为:"+str2); //打印hello world
      }
?
       System.out.println("==========================");
       Scanner s3 = new Scanner(System.in);
       System.out.println("请输入数据:"); //输入hello world
       String str3 = s3.nextLine();
       System.out.println("输入的内容为:"+str3); //打印hello world
?
       System.out.println("==========================");
       Scanner s4 = new Scanner(System.in);
       System.out.println("请输入整数:");
       if(s4.hasNextInt()){      //如果是hasNextFloat(),即使输入整数,由于可以int可以自动转换为Float,返回值依然为True
           System.out.println("整数数据:"+s4.nextFloat());
      }else {
           System.out.println("输入的数据不是整数:"+s4.nextFloat());
      }
?
       s.close();//凡是输入IO流的类如果不关闭会一直占用资源,要养成良好的习惯用完就关掉
       s2.close();
       s3.close();
       s4.close();
  }
}

Scanner扩展

  import java.util.Scanner;
?
public class Scan2 {
   public static void main(String[] args) {
       //输入多个数字,并求其总和与平均数,每输入一个数字用回车确认,输入非数字时结束输入并输出执行结果
       Scanner s = new Scanner(System.in);
       double sum = 0; //和
       int m = 0; //计算输入了多少个数字
       //通过循环判断是否还有输入, 并将每一次输入进行求和运算
       System.out.print("请输入第"+ ++m +"个数据:"); //提前+1 m等于输入数字个数+1
       while (s.hasNextDouble()){
           System.out.print("请输入第"+ ++m +"个数据:");
           double x = s.nextDouble();
           sum += x;
      }
       m--;
       System.out.println(m +"个数的和为:"+ sum);
       System.out.println(m +"个数的平均数为:"+ sum/m);
       s.close();
  }
}

 

顺序结构

Java的结构就是顺序结构,除非特别指明,否接就按照顺序一句一句执行。即由上到下顺序执行。它是由若干个一次执行的处理步骤组成的。

选择结构

if单选择结构

先判断一个东西是否可行,然后我们才去执行。语法:

  if(布尔表达式){
   //如果布尔表达式为true将执行的语句
}

if双选结构

判断一个东西是否可行,可行执行相应操作,不可行则执行另外的相应操作。语法

  if(布尔表达式){
   //如果布尔表达式为true将执行的语句
}else{
   //如果布尔表达式为false将执行的语句
}

if多选结构

  //if语句至多有一个else语句,else语句在多有的else if语句之后
//一旦其中一个else if语句检测为true,之后的else if语句和else语句都将跳过执行
if(布尔表达式 1){
   //如果布尔表达式 1为true将执行的语句
}else if(布尔表达式 2){  
   //如果布尔表达式 2为true将执行的语句
}else if(布尔表达式 3){
   //如果布尔表达式 3为true将执行的语句
}else{
   //如果以上布尔表达式都不为true将执行的语句
}

嵌套的if结构

可以在if结构中 再次使用if语句。语法:

  
if(布尔表达式 1){
   //如果布尔表达式 1为true将执行的语句
   if(布尔表达式 2){
       //如果布尔表达式 2为true将执行的语句
  }
}
  • 思考?寻找一个数,在1-100之间

二分查找

switch多选择结构

多选择结构还有一个实现方式就是switch case语句

switch case 语句判断一个变量与一系列值中某个值是否相等,每个值称为一个分支

switch语句中的变量类型可以byte,short,int或char,String.同时case标签不虚为字符串常量或者字面量

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

 

  
public class Switch1 {
   public static void main(String[] args) {
       //switch 匹配一个具体的值
       char grade = ‘C‘;
       switch (grade){
           case ‘A‘:
               System.out.println("优秀");
               break;//跳出当前结构,如果不加会将匹配项后面代码一并执行 这就是case穿透现象
           case ‘B‘:
               System.out.println("良好");
               break;
           case ‘C‘:
               System.out.println("及格");
               break;
           case ‘D‘:
               System.out.println("再接再厉");
               break;
           case ‘E‘:
               System.out.println("挂科");
               break;
           default:  //else
               System.out.println("未知等级");
      }
  }
}

 

  
public class Switch2 {
   public static void main(String[] args) {
       String name = "parsck";
       //JDK7的新特性,表达式可以是字符串   字符的本质还是数字
?
       //反编译   java---class(字节码文件)---反编译为java文件(IDEA)
       switch (name){
           case "prasck":
               System.out.println("prasck");
               break;
           case "parsck":
               System.out.println("parsck");
               break;
           default:
               System.out.println("wrong");
      }
  }
}

 

反编译Switch2的class文件

  
public class Switch2 {
   public Switch2() {
  }
?
   public static void main(String[] args) {
       String name = "parsck";
       byte var3 = -1;
       switch(name.hashCode()) {
       case -995410982:
           if (name.equals("parsck")) {
               var3 = 1;
          }
           break;
       case -980217572:
           if (name.equals("prasck")) {
               var3 = 0;
          }
      }
?
       switch(var3) {
       case 0:
           System.out.println("prasck");
           break;
       case 1:
           System.out.println("parsck");
           break;
       default:
           System.out.println("wrong");
      }
?
  }
}

 

用户交互,顺序结构,选择结构

上一篇:mysql常用命令整理


下一篇:mysql备份攻略