系列文章专栏
文章目录
前言
Java 程序控制方式采用结构化程序设计中规定的三种基本流程结构,即顺序结构、分支结构、循环结构。
一、Java 输入(补充–Scanner)
输入:从键盘或者控制台获取不同类型的变量,需要使用Scanner类
步骤
- 导包:import java.util.Scanner;
- Scanner的实例化,即创建Scanner对象:Scanner scan = new Scanner(System.in);
- 调用Scanner类的相关方法,来获取指定的变量,如 int age = scanner.nextInt();String name = scanner.next();
代码示例
import java.util.Scanner; // 导包
class ScannerTest {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in); //创建Scanner对象
System.out.println("请输入你的姓名:");
String name = scan.next();
System.out.println(name);
System.out.println("请输入你的年龄:");
int age = scan.nextInt();
System.out.println(age);
System.out.println("请输入你的体重:");
double weight = scan.nextDouble();
System.out.println(weight);
System.out.println("你是否单身:(true/false)");
boolean isSingle = scan.nextBoolean();
System.out.println(isSingle);
//对于char型变量,Scanner没有提供相关方法,只能获取一个字符串
System.out.println("请输入你的性别:(男/女)");
String gender = scan.next();
char genderChar = gender.charAt(0); //提取字符串中指定位置的字符,从0开始
System.out.println(genderChar);
}
}
二、顺序结构(常规都是)
三、分支结构
3.1 if … else
三种格式代码示例
public class IfTest {
public static void main(String[] args) {
// 第一种,true 则执行,false 则退出
int age = 65;
if(age < 18 || age > 60){
System.out.println("需要监护人");
}
System.out.println("独立");
// 第二种,二选一
if(age > 18){
System.out.println("已成年");
}else{
System.out.println("未成年");
}
// 第三种,n选一
if(age < 0){
System.out.println("输入数据有误");
}else if(age < 18){
System.out.println("青少年");
}else if(age < 35){
System.out.println("壮年");
}else if(age < 60){
System.out.println("中年");
}else{
System.out.println("退休"); //else结构是可选的
}
}
}
注意:多个 if … else 串联要特别注意判断顺序;注意 if 的边界条件;浮点数判断相等不能直接用==运算符,可利用差值小于某个临界值来判断;判断引用类型内容相等要使用 equals(),注意避免 NullPointerException。
3.2 switch - case
格式代码示例
public class SwitchTest {
public static void main(String []args) {
int num = 2;
switch(num){
case 0:
System.out.println("zero");
break;
case 1:
System.out.println("one");
break;
case 2:
System.out.println("two");
break;
default:
System.out.println("other");
break;
}
}
}
使用注意说明
- break 关键字是可选的,表明执行到此跳出 switch-case 结构,一般不要省略,建议打开 fall-through 警告;
- switch 结构中的表达式,只能是:byte、short、char、int、枚举类型、String类型,不能是long、float、double、Boolean;
- case 之后只能声明常量,不能声明范围;
- default 结构是可选的,且位置灵活,建议打开 missing default 警告。
补充1:如果switch-case语句中多个相同语句,可以进行合并
public class SwitchTest {
public static void main(String []args) {
int score = 50;
switch(score/10){
case 0:
case 1:
case 2:
case 3:
case 4:
case 5:
System.out.println("不合格");
break;
case 6:
case 7:
case 8:
case 9:
case 10:
System.out.println("合格");
break;
}
// 更简单的思路
switch(score/60){
case 0:
System.out.println("不合格");
break;
case 1:
System.out.println("合格");
break;
}
}
}
补充2:判断闰年标准----可以被4整除,但不可被100整除或可以被400整除------(year % 4 == 0 && year % 100 != 0) || year %400 == 0)
四 循环结构
4.1 for 循环
语法格式示例
/*
For循环结构:
for(初始化条件;循环条件;迭代条件){
循环体;
}
*/
//100以内偶数个数及偶数和
public class ForTest {
public static void main(String []args) {
int sum = 0;
int count = 0;
for(int i = 1;i <= 100;i++){
if(i % 2 == 0){
//System.out.println(i);
sum += i;
count++;
}
}
System.out.println(count);
System.out.println(sum);
}
}
说明:初始化部分可以声明多个变量,逗号隔开;迭代部分可以更新多个变量,逗号隔开。
4.2 while 循环
语法格式示例
/*
while循环结构:
初始化部分;
while(循环条件部分){
循环体部分;
迭代部分;
}
*/
public class WhileTest {
public static void main(String []args) {
int sum = 0;
//int count = 0;
int i = 1;
while(i <= 100){
if(i % 2 == 0){
System.out.println(i);
}
sum += i;
//count++;
i++;
}
System.out.println(sum);
//System.out.println(count);
}
}
说明:注意 while 循环的迭代条件,一旦忘记,就可能导致死循环;while 和 for 循环可以相互转换,但两者的初始化条件部分作用范围不同。
4.3 do-while 循环
语法格式示例
/*
do-while 循环结构:
初始化条件;
do{
循环体;
迭代条件;
}while(循环条件 --->是boolean类型);
*/
public class DoWhileTest {
public static void main(String []args) {
int i = 1;
int sum = 0;
do{
if(i % 2 == 0){
System.out.println(i);
sum += i;
}
i++;
}while(i <= 100);
System.out.println(sum);
}
}
说明:do-while 循环至少执行一次循环体。
4.4 嵌套循环
语法格式示例
//100以内所有质数
public class DoWhileTest {
public static void main(String []args) {
boolean isZhiShu = true;
for(int i = 2;i <= 100;i++){ //内层遍历一遍,相当于外层循环体执行一次
for(int j = 2;j < i;j++){
if(i % j == 0){
isZhiShu = false;
}
}
if(isZhiShu == true){
System.out.println(i);
}
isZhiShu = true;
}
}
}
说明:若外层执行次数为m次,内层为n次,则内层循环体实际上需要执行m*n次。
4.5 break、continue的使用
关键字 | 使用范围 | 相同点 | 不同点 |
---|---|---|---|
break | switch语句、循环语句 | 后无执行语句 | 结束当前循环(本层) |
continue | 循环语句 | 后无执行语句 | 结束本次循环 |