-
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");
}
?
}
}