目录
一、简单交互Scanner
二、顺序结构
三、选择结构
1.if单选择
2.if双选择
3.if多选择
4.嵌套if
5.switch多选择
四、循环结构
1.注意事项
2.while循环
3.do while循环(至少执行一次循环)
4.for循环
5.循环控制
1.break(中断/跳出循环)
2.continue(跳过当次循环[即跳过continue之后的代码,执行下一次循环])
6.IDEA的debug调试(断点调试)
五、练习部分
1.输入一个整数,判断其奇偶性并输出结果(XX是奇/偶数)
2.输出0-100所有奇数,且每行输出5个
3.计算0-100之间所有偶数的和
4.99乘法表
5.99乘法表(反)
6.猜数游戏(无限次数)
7.猜数游戏(n次机会)
基本语法
public class Test {
public static void main(String[] args) {
//创建一个扫描器对象,用于接收键盘数据
Scanner s = new Scanner(System.in);
//通过next方法来获取键盘输入的数据
//s.next();会等待输入
System.out.println("输入的键盘数据:"+s.next());
//使用完关闭,释放资源
s.close();
}
}
常用Scanner对象的方法:
方法 | 意义 |
---|---|
.next() | 读取下一个输入 (1.输入有效字符才可结束输入,在有效字符之前的空白(空格)将会去掉,有效字符之后的空白(空格)会作为分隔符或者结束符,如你输入Hello world,输出只会得到Hello! 2.next不会得到带有空格的字符串) |
.hasNext() | 判断是否有输入 |
nextLine() | 读取一行输入 (1.以回车作为结束符,会输出回车之前的所有字符,包括空白【空格】!) |
nextInt() | 读取一个整数(int类型)类输入 |
nextDouble() | 读取一个浮点数(double类型)类输入 |
nextFloat() | 读取一个浮点数(float类型)类输入 |
nexthasInt() | 判断是否有int类输入 |
nexthasXXX() | 判断是否有XX类输入 |
java的基本结构,从左到右从上到下依次进行
一种最基本的算法结构
格式:
if(布尔表达式){
//满足条件执行的代码
}
if(布尔表达式){
//满足条件执行的代码
}else{
//不满足条件执行的代码
}
if(布尔表达式1){
//满足条件执行的代码
}else if(布尔表达式2){
//满足条件执行的代码
}else if(布尔表达式3){
//满足条件执行的代码
}...else if(布尔表达式n){
//满足条件执行的代码
}else{
//不满足条件执行的代码
}
if(布尔表达式1){
//满足条件执行的代码
if(布尔表达式2){
//满足条件执行的代码
}else{
//不满足条件执行的代码
}
}else{
//不满足条件执行的代码
}
switch (整数、枚举、字符、字符串){
case 值1:{//大括号可选
//满足条件1的代码
break;//可选,但会导致case穿透(满足条件后,没有break的话会继续输出后面的值!)
}
case 值2:{
//满足条件1的代码;
break;
}
case 值3:{
//满足条件1的代码;
break;
}
case 值4://满足条件1的代码; break;
default:{
//默认执行代码
}
}
①.大多数需求是会让循环停止下来的,所以一般都会写一个让表达式失效的方式来退出循环
②.也有少部分需要一直循环,如服务器/键盘数据响应监听等。
③.只要布尔表达式为true,就会造成无限循环(死循环),会影响程序性能降低甚至程序卡死等严重问题,尽量避免!
while(布尔表达式){
//循环执行的代码
}
do{
//循环执行的代码
}while(布尔表达式)
for(初始化值;布尔表达式;更新){
//循环执行的代码
}
//for的死循环
for(;;){
//循环执行的代码
}
//增强for循环,一般用于遍历数组或集合,
//1.声明的变量类型必须和数组或集合的元素类型匹配!
//2.声明变量的作用域仅限在循环内
//3.表达式是要访问的数组或集合名/返回为数组或集合类型的方法
for(声明:表达式){
//循环执行的代码
}
打完断点后就可以开始调试
方式1
方式2
方式3
鼠标右键
开始调试后,需要转到console面板才能看到测试过程
主要记三个就够用了,从左到右
step over:单步执行时,不会进入子函数,而是将子函数执行完成后再停止,也可以说是越过对子函数的单步执行
step into:单步执行,遇到函数会进入到子函数接着单步执行
step out:单步执行到子函数内时,可以点击step out直接执行完余下所有部分并返回该子函数的父级(上一层)函数,简单讲就是快速执行子函数返回上一级
小知识:
1.print不换行输出
2.println换行输出
3.随机数生成
//第一种:随机生成0到1之间的double数(伪随机)
//(0-100]的整数
(int) (Math.random() * 100+1)
//[0-100)的整数
(int) (Math.random() * 100);
//第二种,Random类,伪随机
Random random = new Random();
//[0-100]的整数
random.nextInt(101);
//[0-100)的整数
random.nextInt(100);
//(0-100)的整数
random.nextInt(99)+1;
//输入一个数,判断其奇偶性并输出结果(XX是奇/偶数)
Scanner scanner = new Scanner(System.in);
System.out.println("输入数字(整数)");
int i = scanner.nextInt();
if (i % 2 == 0){
System.out.println("数字"+i+"是偶数");
}else{
System.out.println("数字"+i+"是奇数");
}
问题:为什么输入超过或等于13位的数字会报错呢?
int i = 0;
int count = 0;
while (i<=100){
if (i % 2 != 0){
System.out.print(i+"\t");
count++;
if (count %5 ==0){
System.out.println();
}
}
i++;
}
int sum = 0;
int i = 1;
while (i<100){
if (i % 2 == 0){
//sum = sum + i
sum += i;
}
i++;
}
System.out.println("0-100之间偶数之和为:"+sum);
//while循环
int i = 1;
while (i<10){
int k = 1;
while (k<=i){
System.out.print("\t"+i+"X"+k+"="+i*k+"\t");
k++;
}
System.out.println();
i++;
}
//99乘法表
for (int i = 1; i < 10; i++) {
for (int k = 1; k <= i; k++) {
System.out.print("\t"+i+"X"+k+"\t");
}
System.out.println();
}
// 99乘法表
int i = 9;
while (i>0){
int k = 1;
while (k<=i){
System.out.print("\t"+i+"X"+k+"="+i*k+"\t");
k++;
}
System.out.println();
i--;
}
//99乘法表(倒序)
for (int i = 9; i > 0; i--) {
for (int k = 1; k <= i; k++) {
System.out.print("\t"+i+"X"+k+"="+i*k+"\t");
}
System.out.println();
}
//创建Random对象,用于生成随机数
Random random = new Random();
//创建扫描器对象,用于接收输入的数据
Scanner scanner = new Scanner(System.in);
System.out.println("随机数生成");
int num = random.nextInt(101);
System.out.println("随机数已生成");
while (true){
System.out.println("请输入数字");
int guess = scanner.nextInt();
if (guess > num){
System.out.println("猜大了");
}else if(guess < num){
System.out.println("猜小了");
}else{
System.out.println("猜对了,随机数:"+num);
break;
}
}
//创建Random对象,用于生成随机数
Random random = new Random();
//创建扫描器对象,用于接收输入的数据
Scanner scanner = new Scanner(System.in);
System.out.println("随机数生成");
int num = random.nextInt(101);
System.out.println("随机数已生成");
//计数
int count = 5;
while (true){
System.out.println("请输入数字");
int guess = scanner.nextInt();
if (guess != num){
if (guess > num){
System.out.println("猜大了,你还有"+count+"次");
}else if(guess < num){
System.out.println("猜小了,你还有"+count+"次");
}
count--;
} else{
System.out.println("猜对了,随机数:"+num);
break;
}
if (count<0){
System.out.println("次数用尽,游戏结束");
break;
}
}