顺序结构
顺序结构是最简单的程序结构,也是最常用的程序结构,只要按照解决问题的顺序写出相应的语句就行,它的执行顺序是自上而下,依次执行。
分支结构
if…else语句
- 基本语法形式1
if(布尔表达式)
{
//如果布尔表达式为true将执行的语句
}
- 基本语法形式2(单分支)
if(布尔表达式){
//条件满足时执行代码
}else{
//条件不满足时执行代码
}
- 基本语法形式3(多分支)
if(布尔表达式){
//条件满足时执行代码
}else if(布尔表达式){
//条件满足时执行代码
}else{
//条件都不满足时执行代码
}
代码示例:
- code1(判断数字奇偶性)
public static void main(String[] args) {
int a = 10;
if(a % 2 == 0){
System.out.println("偶数");
}else{
System.out.println("奇数");
}
}
- code2(判断数字正负)
public static void main(String[] args) {
int a = -121;
if(a > 0){
System.out.println("正数");
}else{
System.out.println("负数");
}
}
- code3(判断是否闰年)
public static void main(String[] args) {
int year = 2011;
if((year % 100 != 0 && year % 4 == 0) || (year % 400 == 0)){
System.out.println(year + "闰年");
}else{
System.out.println(year + "不是闰年");
}
}
swtich…case语句
- 基本语法
switch(整数|枚举|字符|字符串){
case 内容1 : {
内容满足时执行语句;
[break;]
}
case 内容2 : {
内容满足时执行语句;
[break;]
}
...
default:{
内容都不满足时执行语句;
[break;]
}
}
- code
public static void main(String[] args) {
int a = 1;
switch (a){
case 1:
System.out.println(a);
break;
case 2:
System.out.println(a);
break;
default:
System.out.println("参数都不匹配");
break;
}
}
注:在swtich中long/float/double/boolean不可以作为Swtich的参数
循环结构
while循环
while(循环条件){
循环语句;//循环条件为 true, 则执行循环语句; 否则结束循环
}
- code(打印1~10的数字)
public static void main(String[] args) {
int a = 1;
while( a <= 10){
System.out.println("a = " +a);
a++;
}
}
- code(计算1~10的和)
public static void main(String[] args) {
int sum = 0;
int n = 1;
while(n <= 10){
sum += n;
n++;
}
System.out.println("sum = " + sum);
}
- code(计算5!)
public static void main(String[] args) {
int n = 1;
int ans = 1;
while(n <= 5){
ans *= n;
n++;
}
System.out.println(ans);
}
- code(计算 1! + 2! + 3! + 4! + 5!)
public static void main(String[] args) {
int n = 1;
int m = 1;
int sum = 0;
while(n <= 5){
int ret = 1;
m = 1;
while(m <= n){
ret *= m;
m++;
}
sum += ret;
n++;
}
System.out.println(sum);
}
break
-
break 的功能是让循环提前结束.
-
code(找到 100 - 200 中第一个 3 的倍数)
public static void main(String[] args) {
int n = 1;
while(n <= 100){
if(n % 3 == 0){
System.out.println("找到了 3 的倍数, 为:" + n);
break;
}
n++;
}
}
continue
continue 的功能是跳过这次循环, 立即进入下次循环
- code(找到 100 - 200 中所有 3 的倍数)
public static void main(String[] args) {
int n = 100;
while(n <= 200){
if(n %3 != 0){
n++;
continue;
}
System.out.println(n);
n++;
}
}
do…while循环
do{
循环语句;
}while(循环条件);
先执行循环语句, 再判定循环条件
- Code(打印1~10)
public static void main(String[] args) {
int num = 1;
do{
System.out.println(num);
++num;
}while (num <= 10);
}
for循环
for(表达式1;表达式2;表达式3){
循环体;
}
- 表达式1: 用于初始化循环变量.
- 表达式2: 循环条件
- 表达式3: 更新循环变量
- Code(打印1~10的数字)
public static void main(String[] args) {
for(int i = 1; i <= 10;i++){
System.out.println("i = " + i);
}
}
- Code(计算1~100的和)
public static void main(String[] args) {
int sum = 0;
for(int i = 1;i <= 10;i++){
sum += i;
}
System.out.println("sum = "+ sum);
}
- Code(计算5的阶乘)
public static void main(String[] args) {
int ans = 1;
for(int i = 1; i <= 5; i++){
ans *= i;
}
System.out.println(ans);
}
- Code(计算 1! + 2! + 3! + 4! + 5!))
public static void main(String[] args) {
int sum = 0;
for(int i = 1; i <= 5; i++){
int tmp = 1;
for(int j = 1;j <=i; j++){
tmp *= j;
}
sum += tmp;
}
System.out.println(sum);
}
输入和输出
输出到控制台
public static void main(String[] args) {
System.out.println("输出且换行");
System.out.print("输出不换行");
System.out.printf("%d\n",10);
}
- 格式化转化符
转换符 | 类型 | 举例 |
---|---|---|
d | 十进制整数 | ("%d", 100) |
x | 十六进制整数 | ("%x", 100) |
o | 八进制整数 | ("%o", 100) |
f | 定点浮点数 | ("%f", 100f) |
e | 指数浮点数 | ("%e", 100f) |
g | 通用浮点数 | ("%g", 100f) |
a | 十六进制浮点数 | ("%a", 100) |
s | 字符串 | ("%s", 100) |
c | 字符 | ("%c", ‘1’) |
b | 布尔值 | ("%b", 100) |
h | 散列码 | ("%h", 100) |
% | 百分号 | ("%.2f%%", 2/7f) |
键盘输入
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String str = scanner.nextLine();
System.out.println(str);
int a = scanner.nextInt();
System.out.println(a);
double b = scanner.nextDouble();
System.out.println(b);
}
注:
- 有多个不同类型数据读取时,读取字符串时应该先读取,否则会把回车当作下一个数据,导致出错。
- scanner.next()遇到空格停止接受数据,scanner.nextLine()是读取到回车停止。
- 读取多个整数
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while(scanner.hasNextInt()){
int n = scanner.nextInt();
System.out.println(n);
}
}
- 猜数字游戏
public static void main(String[] args) {
Random random = new Random();
int rand = random.nextInt(100);//生成范围[0~100)
Scanner scanner = new Scanner(System.in);
while(true){
System.out.println("请输入你猜的数字");
int n = scanner.nextInt();
if(n < rand){
System.out.println("猜小了");
}else if(n == rand){
System.out.println("猜对了");
break;
}else if(n > rand){
System.out.println("猜大了");
}
}
}