1.用户交互Sacnner
-
Scanner对象
-
之前我们学的基础语法中我们并没有实现程序和人的交互,但是java给我们提供了这样一个工具类,我们可以获取用户的输入。java,util.Scanner是java5的新特征,我们可以通过Scanner类来获取用户的输入
-
基本语法:
Scanner s = new Scanner(System.in);
-
通过Scanner类的next()与nextLine()方法获取输入的字符串,在读取前我们一般需要使用hasNest()与hasNestLine()判断是否还有要输入的数据
-
-
next():
-
一定要读取到有效字符串后才可以结束输入
-
在输入有效字符串之前遇到空白,next()方法会自动将其去掉
-
只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符
-
next()不能得到带有空格的字符串
//Scanner类的next() 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(); } } =========================================================== 结果:使用next方法接收: hello word 输入的内容为:hello
-
-
nestLine:(用的较多)
- 以enter为结束符,也就是说nextLine()方法返回的是输入回车之前的所有字符串
- 可以获得空白
//Scanner类的nextLine() public class Demo02 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.println("使用nextLine方法接收:"); //判断用户是否还有输入 if(scanner.hasNext()){ //使用nextLine方式接收 String str = scanner.nextLine(); System.out.println("输入的内容为:"+str); } //凡是属于io流的类如果不关闭会一直占用资源,要养成好习惯,用完要关掉 scanner.close(); } } 结果:使用nextLine方法接收: hello word 输入的内容为:hello word ================================================================== public static void main(String[] args) { //接收键盘输入 Scanner scanner = new Scanner(System.in); System.out.println("请输入数据:"); String str = scanner.nextLine(); System.out.println("输入的内容为:"+str); //凡是属于io流的类如果不关闭会一直占用资源,要养成好习惯,用完要关掉 scanner.close(); } 结果:请输入数据: hello world 输入的内容为:hello world
- Scanner进阶使用
//进阶使用
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("输入的不是小数数据:");
}
}
=========================================================================================================
public static void main(String[] args) {
//我们要输入多个数字,并求其总和与平均数,没输入一个数字用回车
// 确认通过输入非数字来结束输入并输出执行结果
Scanner scanner = new Scanner(System.in);
//和
double sum = 0;
//计算输入了多少个数字
int m = 0;
System.out.println("请输入数据:");
//通过循环判断是否还有输入,并在里面对每一个进行求和和统计
while (scanner.hasNextDouble()){
//接收Double型数据
double x = scanner.nextDouble();
m = m + 1;//m++;
sum = sum + x;//sum+=x;
System.out.println("你输入了第"+m+"个数据,然后当前结果sum"+sum);
}
System.out.println(m+"个数的和为:"+sum);
System.out.println(m+"个数的品均值是"+(sum/m));
scanner.close();
}
2.顺序结构
-
java的基本结构就是顺序结构,除非特别指明,否则就按照顺序一句一句执行
-
顺序结构是最简单的算法结构
-
语句与语句之间,框与框之间是按从上到下的顺序进行的,它是由若干个依次执行的处理步骤组成的,它是任何一个算法都离不开的一种基本算法结构
public static void main(String[] args) { System.out.println("helloword1"); System.out.println("helloword2"); System.out.println("helloword3"); System.out.println("helloword4"); System.out.println("helloword5"); System.out.println("================================================"); /*结果 helloword1 helloword2 helloword3 helloword4 helloword5*/ }
3.选择结构
-
if选择结构
-
我们很多时候需要判断一个东西是否可行,然后我们才去执行,这样一个过程在程序中用if语句来表示
-
语法:if(布尔表达式){如果布尔表达式为true将执行的语句}
public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.println("请输入内容:"); //接收用户输入的内容 String s = scanner.nextLine(); //判断字符串是否相等 if(s.equals("hello")){ System.out.println(s); } System.out.println("End"); scanner.close();
-
-
if双选择结构
-
现在有两个需求,公司要收购一个软件,成功了给人支付100万元,失败,自己找人开发这样的需求用一个if是搞不定的,我们需要两个判断,需要一个双选择结构,所以就有了if ,else
-
语法:if(布尔表达式){//如果布尔表达式为true}else{如果布尔表达式为false}
public static void main(String[] args) { //考试分数打于60就几个,小于则不及格 System.out.println("请输入分数"); Scanner scanner = new Scanner(System.in); //等待用户的输入 int score = scanner.nextInt(); if(score>60){ System.out.println("及格"); }else { System.out.println("不及格"); } scanner.close(); }
-
-
if多选择结构
-
我们发现干才的代码不符合实际要求,真实的情况还可能存在ABCD,存在区间多级判断,比如90-100位A,80-90位B,等等。生活中我们需要的选择不仅仅是两个,所以我们需要一个多选择结构来吃力这类问题
-
语法:if(布尔表达式1){//如果布尔表达式为1的值true执行代码块}
else if(布尔表达式2){//如果布尔表达式为2的值true执行代码块}
else if(布尔表达式3){//如果布尔表达式为3的值true执行代码块}
else {//如果以上的布尔表达式都不为true,执行代码}
1
-
-
嵌套的if结构
-
使用if else语句是合法的。也就是说可以在另一个if或else语句中使用if或者else if语句,你可以像if语句一样嵌套else if....else
-
语法:if(布尔表达式1){//如果布尔表达式的值为true执行代码
if(布尔表达式2){//如果布尔表达式的值为true执行代码 }
}
-
-
switch多选择结构
- 多选择结构还有一个实现方式就是switch case语句
- switch case语句判断一个变量与一系列值中某个值是否相等,每值被称为一个分支
- switch语句中的变量类型可以是:
- byte, short, int或char
- 从java SE 7开始
- switch语句支持字符串String类型
- 同时case标签必须为字符串常量或自变量
//语法: switch(expression){ case value: //语句 break;//可选 case value: //语句 break;//可选 //可以有任意数量的case语句 defaulet ://可选 //语句 } ================================================================ public static void main(String[] args) { //case 穿透 //匹配一个具体的值 char grade = 'C'; switch (grade){ case 'A': System.out.println("优秀"); break;//可选 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: System.out.println("未知等级"); } } ================================================================== public static void main(String[] args) { String name = "狂神"; //jdk7的新特性,表达结果可以是字符串 //字符串的本质是数字 //反编译 java class(字节码文件) 使用idea可以实现反编译 switch (name){ case "秦疆": System.out.println("秦疆"); break; case "狂神": System.out.println("狂神"); break; default: System.out.println("弄啥嘞");