键盘录入
键盘录入:
使用键盘录入的原因:
我们目前在写程序的时候,数据值都是固定的,
但是实际开发中,数据值肯定是变化的,
所以,我准备把数据改进为键盘录入,提高程序的灵活性。
使用步骤:
1、导包
import java.util.Scanner;
2、创建Scanner对象
Scanner sc = new Scanner(System.in);
3、调用对象中的方法,接收键盘录入的信息
sc.nextInt()
注意事项:
1、调用的方法接收的数据是什么类型,就用对应方法类型的变量接收
2、键盘录入的数据必须和调用方法的类型一致,不然会报错
java.util.InputMismatchException 输入不匹配异常
import java.util.Scanner;
public class ScannerDemo1 {
public static void main(String[] args) {
//创建对象
Scanner sc = new Scanner(System.in);
//使用对象中的方法,接收一个int类型的数据
//使用对象sc中的nextInt()方法,接收一个键盘录入的int类型的数据
//定义一个int类型的变量i,接收数据
int i = sc.nextInt(); //等待我们键盘录入数据
System.out.println("键盘录入的数据为:" + i);
}
}
例题:
需求:键盘录入两个数据,并对这两个数据求和,输出其结果
分析:
1、导包
2、创建键盘录入对象
3、调用方法,键盘录入两个int类型的数据
4、求和
5、输出
import java.util.Scanner;
public class ScannerTest1 {
public static void main(String[] args) {
//创建键盘录入对象
Scanner sc = new Scanner(System.in);
//调用两次方法,键盘录入两个int类型的数据
System.out.println("请输入第一个int类型的数据:");
int i = sc.nextInt();
System.out.println("请输入第二个int类型的数据:");
int j = sc.nextInt();
//求和
int res = i + j;
//输出
System.out.println("i+j=" + res);
}
}
需求:键盘录入两个数据,获取这两个数据中的最大值
(先不考虑两个数据相等的情况)
分析:
1、导包
2、创建键盘录入对象
3、调用方法,输入两个数据
4、三目运算符求出两个数中的最大值
5、输出
import java.util.Scanner;
public class ScannerTest2 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
//调用方法,输入两个数据
System.out.println("请输入第一个int类型的数据:");
int i = sc.nextInt();
System.out.println("请输入第二个int类型的数据:");
int j = sc.nextInt();
//三目运算符求出两个数中的最大值
int max = (i > j) ? i : j;
//输出
System.out.println("输入的两个数中,最大值为:" + max);
}
}
三目运算符
格式
(关系表达式)?表达式1:表达式2;
如果条件为true,运算后的结果是表达式1;
如果条件为false,运算后的结果是表达式2;
执行流程:
1、首先判断关系表达式中的结果,
2、如果说判断关系表达式的结果为true,执行冒号前面的表达式1
3、如果说判断关系表达式的结果为false,执行冒号后面的表达式2
注意事项:
1、关系表达式的小括号不能省略
2、如果后面的表达式只是一个值或者一个变量,小括号可以省略
3、如果后面的表达式需要进行一些运算,小括号不能省略
public class OptSanMuDemo {
public static void main(String[] args) {
boolean b = (1>3)?(true):(false);
System.out.println(b);
int x = 10;
int i = (x++ == 11)?(x++):x;
System.out.println(i);
System.out.println(x);
int x1 = 13;
//三目运算表达式的结果数据类型由表达式中最高的数据类型接收
double i2 = (x1++ == 12)?x1:((x1*1.0)/2);
System.out.println(i2);
System.out.println(x1);
}
}
例题:
需求1:获取两个数中较大的数据
需求2:获取三个数中较大的数
需求3:比较两个整数是否相同
使用三目运算符解决:
public class OptTest1 {
public static void main(String[] args) {
int a = 10;
int b = 20;
int c = 40;
//三目运算符 需求1
int result = (a > b) ? a : b;
System.out.println(result);
//三目运算符 需求2
int max = (result > c) ? result : c;
System.out.println("三个数中最大值为:" + max);
int x = 11;
int y = 12;
//三目运算符 需求3
boolean res2 = (x == y) ? true : false;
System.out.println("x与y进行比较:" + res2);
}
}
顺序结构
顺序结构:
按照代码的顺序,自上而下执行
public class SequenceDemo1 {
public static void main(String[] args) {
System.out.println("这是第1条语句");
System.out.println("这是第2条语句");
System.out.println("这是第3条语句");
System.out.println("这是第4条语句");
System.out.println("这是第5条语句");
System.out.println("这是第6条语句");
}
}
基本语法
选择结构
一、if语句
选择结构中的if语句:
格式:
1、 if循环
if(关系表达式){
如果关系表达式的结果是true,执行大括号中的语句
如果关系表达式的结果是false,就跳过不执行
}
执行流程:
首先判断关系表达式看其结果是true还是false
如果是true就执行语句体
如果是false就不执行语句体
注意事项:
1、如果在关系表达式小括号后面加上了一个分号,说明if语句结束
默认存在一个空语句体
2、括号都是成双成对出现的
3、小括号中的结果必须是布尔类型(boolean类型)
public class IfDemo1 {
public static void main(String[] args) {
System.out.println("程序开始执行");
int a = 12;
if(a == 10) {
System.out.println("a的值是10");
}
// if(a++){
//
// }
System.out.println("over");
}
}
2、 if语句的第二种格式:
格式:
if(关系表达式){
语句体1;
}else{
语句体2;
}
执行流程:
首先判断关系表达式看其结果是true还是false
如果是true就执行语句体1
如果是false就执行语句体2
举例:
上厕所案例,用键盘录入实现
分析:
1、导包
2、创建键盘录入对象
3、键盘录入信息
4、if判断输入的信息是男生还是女生
5、输出
import java.util.Scanner;
public class IfDemo2 {
public static void main(String[] args) {
//创建键盘录入对象
Scanner sc = new Scanner(System.in);
//键盘录入信息
System.out.println("请输入你是男生还是女生(男生扣1,女生扣2)");
//接收键盘录入字符串的方法
// String sex = sc.next();
int i = sc.nextInt();
if(i == 1){
System.out.println("请走男生通道");
}else {
System.out.println("请走女生通道");
}
}
}
if语句的第二种格式与三目运算符的关系
注意事项:
1、当if-else格式中的语句体一条输出语句的时候,不能转换成三目运算符. 2、当if-else格式中的语句体不是一条的时候,也不能转换成三目运算符
public class IfDemo3 {
public static void main(String[] args) {
int a = 10;
int b = 20;
int res1 = (a > b)?a:b;
System.out.println(res1);
if(a > b){
res1 = a;
a++;
}else {
res1 = b;
b++;
}
// System.out.println(res1);
// int res2 = (a > b)?res1=a;a++;:res1=b;b++;
// if(a < b){
// System.out.println("a比b小");
// }else {
// System.out.println("a比b大或者相等");
// }
// (a < b)?System.out.println("a比b小"):System.out.println("a比b大或者相等");
}
}
3、 if语句的第三种格式:
if(关系表达式1){
语句体1;
}else if(关系表达式2){
语句体2;
}else if(关系表达式3){
语句体3;
}
...
else{
语句体n;
}
需求:
学生考试成绩判断:
0-60 不及格
60-80 中等
80-90 良好
90-100 优秀
键盘录入改进
import java.util.Scanner;
public class IfDemo4 {
public static void main(String[] args) {
//创建键盘录入对象
Scanner sc = new Scanner(System.in);
//接收键盘录入的学生成绩
System.out.println("请输入罗光元的数学成绩:");
int score = sc.nextInt();
if(0<=score & score<60){
System.out.println("不及格");
}else if(60<=score & score<80){
System.out.println("中等");
}else if(80<=score & score<90){
System.out.println("良好");
}else {
System.out.println("优秀");
}
}
}
简单的案例分析:
package com.shu.wyh.day05;
/*
x和y的关系满足如下:
x>=3 y = 2x + 1;
-1<=x<3 y = 2x;
x<=-1 y = 2x - 1;
键盘录入x的值,判断x的范围,执行不同的公式
分析:
1、导包
2、创建键盘录入对象
3、用变量x接收键盘录入的int类型的数据
4、if语句判断执行不同的路径
5、输出
*/
import java.util.Scanner;
public class IfTest1 {
public static void main(String[] args) {
//创建键盘录入对象
Scanner sc = new Scanner(System.in);
//键盘录入数据
System.out.println("请输入x的值:");
int number = sc.nextInt();
int y = 0;
if (number >= 3) {
y = 2 * number + 1;
} else if (number >= -1 & number < 3) {
y = 2 * number;
} else if (number <= -1) {
y = 2 * number - 1;
} else {
System.out.println("输入的数据有误");
}
System.out.println("y的值为:" + y);
}
}
```java
package com.shu.wyh.day05;
/*
键盘录入月份的值,输出对应的季节
3-5 春季
6-8 夏季
9-11 秋季
12-2 冬季
*/
import java.util.Scanner;
public class IfTest2 {
public static void main(String[] args) {
//创建键盘录入对象
Scanner sc = new Scanner(System.in);
//接收键盘录入的数据
System.out.println("请输入你想要知道季节的月份:");
int month = sc.nextInt();
if(3<=month & month<=5){
System.out.println("春季");
}else if(6<=month & month<=8){
System.out.println("夏季");
}else if(9<=month & month<=11){
System.out.println("秋季");
}else if(month==12){
System.out.println("冬季");
}else if(month==1){
System.out.println("冬季");
}else if(month==2){
System.out.println("冬季");
}else {
System.out.println("输入的数据有误,请重新输入");
}
}
}
package com.shu.wyh.day05;
/*
if语句的嵌套:
需求:获取三个数据中的最大值
int a = 10;
int b = 21;
int c = 30;
键盘录入改进
*/
import java.util.Scanner;
public class IfTest3 {
public static void main(String[] args) {
// int a = 10;
// int b = 21;
// int c = 30;
//创建键盘录入对象
Scanner sc = new Scanner(System.in);
System.out.println("请输入第一个数据:");
int a = sc.nextInt();
System.out.println("请输入第二个数据:");
int b = sc.nextInt();
System.out.println("请输入第三个数据:");
int c = sc.nextInt();
if(b > c){
if(b > a){
System.out.println("最大值是b:"+b);
}else {
System.out.println("最大值是a:"+a);
}
}else {
if(c > a){
System.out.println("最大值是c:"+c);
}else {
System.out.println("最大值是a:"+a);
}
}
}
}
二、switch语句
switch语句格式:
switch(表达式) {
case 值1:
语句体1; break;
case 值2:
语句体2; break;
…
default:
语句体n+1; break;
}
格式解释
switch表示这是switch语句表达式的取值:byte,short,int,charJDK5以后可以是枚举JDK7以后可以是Stringcase后面跟的是要和表达式进行比较的值语句体部分可以是一条或多条语句break表示中断,结束的意思,可以结束switch语句default语句表示所有情况都不匹配的时候,就执行该处的内容,和if语句的else相似。
执行流程
首先计算出表达式的值其次,和case依次比较,一旦有对应的值,就会执行相应的语句,在执行的过程中,遇到break就会结束。最后,如果所有的case都和表达式的值不匹配,就会执行default语句体部分,然后程序结束掉。
注意事项:
case后面只能是常量,不能是变量,而且,多个case后面的值不能出现相同的default可以省略吗?可以省略。一般不建议。除非判断的值是固定的。(单选题)break可以省略吗?可以省略,一般不建议。否则结果可能不是你想要的default的位置一定要在最后吗?可以出现在switch语句任意位置。switch语句的结束条件遇到break执行到程序的末尾
循环结构
概念:
循环语句可以在满足循环条件的情况下,反复执行某一段代码,这段被重复执行的代码被称为循环体语句,当反复执行这个循环体时,需要在合适的时候把循环判断条件修改为false,从而结束循环,否则循环将一直执行下去,形成死循环。
组成:
初始化语句:
一条或者多条语句,这些语句完成一些初始化操作。
判断条件语句:
这是一个boolean 表达式,这个表达式能决定是否执行循环体。
循环体语句:
这个部分是循环体语句,也就是我们要多次做的事情。
控制条件语句:
这个部分在一次循环体结束后,下一次循环判断条件执行前执行。通过用于控制循环条件中的变量,使得循环在合适的时候结束。
1、for循环语句
格式:
for(初始化语句;判断条件语句;控制条件语句) {
循环体语句;
}
执行流程
A:执行初始化语句
B:执行判断条件语句,看其结果是true还是false如果是false,循环结束。如果是true,继续执行。
C:执行循环体语句
D:执行控制条件语句E:回到B继续
语句图:
注意事项:
判断条件语句的结果是一个boolean类型
循环体语句如果是一条语句,大括号可以省略;如果是多条语句,大括号不能省略。建议永远不要省略。
一般来说:有左大括号就没有分号,有分号就没有左大括号
2、while循环
格式:
while循环语句格式:
基本格式
while(判断条件语句) {
循环体语句;
}
扩展格式 初始化语句;
while(判断条件语句) {
循环体语句;
控制条件语句;
}
区别:
for循环语句和while循环语句可以等价转换,但还是有些小区别的使用区别:控制条件语句所控制的那个变量,在for循环结束后,就不能再被访问到了,而while循环结束还可以继续使用,如果你想继续使用,就用while,否则推荐使用for。原因是for循环结束,该变量就从内存中消失,能够提高内存的使用效率。场景区别:for循环适合针对一个范围判断进行操作while循环适合判断次数不明确操作
3、do…while
格式:
do…while循环语句格式:
基本格式
do {
循环体语句;
}while((判断条件语句);
扩展格式 初始化语句;
do {
循环体语句; 控制条件语句;
} while((判断条件语句);
三种循环语句其实都可以完成一样的功能,也就是说可以等价转换,但还是有小区别的:
do…while循环至少会执行一次循环体。
for循环和while循环只有在条件成立的时候才会去执行循环体
注意事项:
写程序优先考虑for循环,再考虑while循环,最后考虑do…while循环。
如下代码是死循环
while(true){}
for(; ; ){}
本文详细介绍了Java中使用Scanner类进行键盘录入数据的方法,包括导入Scanner、创建对象、接收不同类型数据的步骤及注意事项。同时,文章讲解了if语句、if-else语句、三目运算符的选择结构,以及for、while、do...while循环结构的使用,展示了各种结构在实际编程中的应用,如计算两个数之和、寻找最大值、判断季节等。

被折叠的 条评论
为什么被折叠?



