if else 基本使用
if else 有三种形式
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| class IfElse { public static void main(String[] args) { int age = 60; if(age > 18){ System.out.println("已经成年了"); }
if(age > 18){ System.out.println("已经成年了"); }else{ System.out.println("未成年"); }
if(age < 18){ System.out.println("未成年"); }else if(age < 35){ System.out.println("青年"); }else if(age < 60){ System.out.println("中年"); }else if(age < 120){ System.out.println("老年"); }else{ System.out.println("墓年"); } } }
|
Scanner基本使用
首先导入 Scanner 包
然后实例化
最后使用不同的类型接收不同类型的变量
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
|
import java.util.Scanner;
class ScannerTest { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("请输入您的姓名"); String name = sc.next();
System.out.println("请输入您的年龄"); int age = sc.nextInt();
System.out.println("请输入您的体重"); double weight = sc.nextDouble();
System.out.println("是否看上眼(false/true)"); boolean islove = sc.nextBoolean();
System.out.println("姓名:" + name + "," + "年龄:" + age + "," + "体重:" + weight + "," + "是否满意:" + islove);
} }
|
SwitchCase使用
基本语法结构
1 2 3 4 5 6 7 8
| switch(判断语句){ case 条件1: break; case 条件2: break; default: break; }
|
连续判断语法结构
1 2 3 4 5 6 7 8
| switch(判断语句){ case 条件1: case 条件2: break; default: break; }
|
switch 判断只能值如下6中数据类型
- byte
- short
- char
- int
- 枚举类型(sdk5.0新增)
- String类型 (sdk7.0新增)
case 只能声明一个常量,不能声明范围
break 字段是可选的,case 判断遇到 break 时会退出判断,如果没有 brea 则一直往下判断
default 当所有的 case 都没有判断成功时会进入到 default 中,相当于 if else 中的 else
代码示例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
| import java.util.Scanner; class SwitchCase{ public static void main(String[] args){ Scanner sc = new Scanner(System.in); System.out.println("请输入1~10"); int num = sc.nextInt();
switch(num){ case 1: case 2: System.out.println("你输入了1或者2"); break; default: System.out.println("出错了"); break; } } }
|
循环结构
循环结构:在某些条件满足的情况下,反复执行一段特定的代码
Java中有三种循环结构
- for循环
- while循环
- do while 循环
所有循环结构都有下面四要素
- 初始化条件
- 循环条件 类型要求为布尔类型
- 循环体
- 迭代条件
For 循环
for 循环结构
1 2 3 4 5 6 7 8
| 1.初始化条件 2.循环条件 必须是一个布尔值 3.循环体 4.迭代条件 for(1;2;4){ 3 }
|
执行方式: 1 -> 2 -> 3 -> 4 -> 2 -> 3 -> 4 -> … -> 2(不满足) -> 退出循环
代码示例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| class For{ public static void main(String[] args){
int sum = 0; for(int i=1; i <= 100; i++){ if(i % 2 == 0){ sum += i; System.out.println(i); } } System.out.println("100以内的偶数总和为" + sum); } }
|
While 循环
while 循环结构
写 while 循环时一定要注意防止死循环
1 2 3 4 5 6 7 8 9 10
| 1.初始化条件 2.循环条件 必须是一个布尔值 3.循环体 4.迭代条件
1; while(2){ 3; 4; }
|
执行过程 1 -> 2 -> 3 -> 4 -> 2 -> 3 -> 4 -> … -> 2(不满足) -> 退出循环
代码演示
1 2 3 4 5 6 7 8 9 10 11
| class While { public static void main(String[] args){ int i = 1; while(i <= 100){ System.out.println(i); i++; } System.out.println(i); } }
|
Do While 循环
1 2 3 4 5 6 7 8 9 10 11 12
| do while 循环结构 1.初始化条件 2.循环条件 必须是一个布尔值 3.循环体 4.迭代条件
1; do{ 3; 4; }while(2)
|
执行循序 1 - 3 - 4 - 2 - 3 - 4 - 2 - 3 - 4 - … - 2(不满足) - 退出循环
do while 循环特定,不管条件是否成立,至少会执行一次循环体
1 2 3 4 5 6 7 8 9 10 11
| class DoWhile { public static void main(String[] args) { int i = 1; do{ System.out.println(i); i++; }while(i <= 100); } }
|
无限次循写法
无限次循环方式
1 2 3 4 5 6 7 8 9 10 11
| for(;;){ 无限循环 break; }
while(true){ 无限循环 break; }
|
练习题:从键盘输入任意数量的数字,记录并输出正数个数和负数个数,遇到0则退出
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| import java.util.Scanner; class ForWhile { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int positiveNumber = 0; int negativeNumber = 0; for(;;){ int number = sc.nextInt(); if(number > 0){ positiveNumber++; }else if(number < 0){ negativeNumber++; }else{ break; } } System.out.println("正数个数为" + positiveNumber); System.out.println("负数个数为" + negativeNumber); } }
|
嵌套循环
嵌套循环表示循环里面套循环,例如 For 循环里面嵌套 While 循环,While 循环里面嵌套 For 循环。
我们把外面的循环称为外层循环,吧里面的循环称之为内层循环。
外层循环循环 n 遍,内层循环循环 m 遍,则内层循环一共循环 n * m 遍。
代码演示
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
| class ForFor{ public static void main(String[] args) {
for(int i = 1; i <= 5; i++){ for(int j = 1; j <= i; j++){ System.out.print("*"); } System.out.println(); }
for (int i = 1;i <= 5; i++){ for (int j = 1;j <= 6 - i; j++){ System.out.print("*"); } System.out.println(); } } }
|
使用嵌套循环输出菱形
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
|
class ForForTest { public static void main(String[] args) { for (int i = 1; i <= 5; i++){ for (int j = 1; j <= 6-i; j++){ System.out.print(" "); } for (int k = 1; k <= i; k++){ System.out.print("* "); } System.out.println(); } for(int i = 1; i <= 4; i++){ for(int j = 1; j <= i; j++){ System.out.print(" "); } for(int k = 1; k <= 5 - i; k++){ System.out.print(" *"); } System.out.println(); } } }
|
输出九九乘法表
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
|
class JiuJiu { public static void main(String[] args) { for(int i = 1; i <= 9; i++){ for(int j = 1; j <= i; j++){ System.out.print(i + "*" + j + "=" + i * j + " "); } System.out.println(); } } }
|
输出100以内所有的质数
质数:只能被自己和1整除的自然数
例如:7,7只能被自己和1整除,所以7就是一个质数。15:15可以被3和5整数,也可以被1和15整除,所以15不是一个质数
最小的质数是2
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
|
class ZhiShu { public static void main(String[] args){ Boolean isFlag = true; for(int i = 2; i <= 100; i++){ for(int j = 2; j <= i -1; j++){ if( i % j == 0){ isFlag = false; } } if(isFlag){ System.out.println(i); } isFlag = true; } } }
|
输出质数问题的代码优化
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
|
class ZhiShu2 { public static void main(String[] args){ long startTime = System.currentTimeMillis(); int count = 0; Boolean isFlag = true; for(int i = 2; i <= 100000; i++){ for(int j = 2; j < Math.sqrt(i); j++){ if(i % j == 0){ isFlag = false; break; } } if(isFlag){ count++; } isFlag = true; } long endTime = System.currentTimeMillis(); System.out.println("质数个数为" + (count)); System.out.println("程序运行所用时间" + (endTime - startTime)); } }
|
输出1000以内的所有完数
题目要求:一个数如果恰好等于这个数的因子之和,我们称这个数为一个完数。例如 6 = 1+2+3。因子:除去这个数本身的其他约数
break和continue关键字的区别
关键字 |
使用范围 |
相同点 |
不同点 |
break |
switch case;循环结构 |
都可以在循环结构中使用,关键字后面不能跟代码 |
结束当前循环 |
continue |
循环结构 |
都可以在循环结构中使用,关键字后面不能跟代码 |
结束当次循环 |
通过代码查看区别
break
1 2 3 4 5 6 7
| for(int i=1; i <= 10; i++){ if(i % 4 == 0){ break; } System.out.println(i); }
|
continue
1 2 3 4 5 6
| for(int i = 1; i <= 10; i++){ if(i % 4 == 0){ continue; } System.out.println(i); }
|
带标签的break和continue使用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| class LabelFor { public static void main(String[] args){ label:for(int i=1;i<=4;i++){ for(int j=1;j<=10;j++){ if(j % 4 == 0){ break label; } System.out.print(j); } System.out.println(); System.out.print(i); } } }
|