分支结构
分支结构之一: if 结构
public class structure {
public static void main(String[]args){
//第一种if结构 :if(){}结构
//如果为true就执行语句,如果false就不执行;
//if后一定是布尔类型
//
int heartBeats= 79;
if(heartBeats > 60 || heartBeats >100){
System.out.print("需要进一步检查");
}//需要进一步检查
//第二种结构: if else结构,使用最多
//三元运算符都可以转换成if else,反之不成立
//if(){}else{}
int age = 23;
if(age<= 18){
System.out.println("未成年");
}else{
System.out.println("成年人");
}//成年人
//第三种结构: if else if
int time = 2;
if(time<12){
System.out.println("时间为上午");
}else if(23<time ){
System.out.println("时间为下午");
}else if(time<24){
System.out.println("现在睡觉为熬夜");
}//时间为上午
}
}
//扩展小需求1:从键盘获取不同类型的变量
import java.util.Scanner;
/*
1,导包:import java.util.Scanner
2,Scanner的实例化(创建对象):Scanner scan = new Scanner(System.in);
3,调用方法,获取变量
* */
public class Operation {
public static void main(String[]args){
Scanner scan = new Scanner(System.in);
int num = scan.nextInt();
System.out.println(num);
}
}
//扩展小需求2:从键盘获取指定类型的变量
import java.util.Scanner;
public class Operation{
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
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 isMarried = scan.nextBoolean();
System.out.println(isMarried);
}
}
//说明:
1,多个表达式位置:
①如果多个条件表达式是互斥关系,则判断位置再上或 下都可;
②如果多个条件表达式存在交集关系,则需酌情考虑上或者下;
③如果多个条件表达式有包含关系,则通常将范围小的放在上面;
2,当代码只有一行的时候,大括号可以省去
#分支结构之二:switch - case结构:记得+break
public class Operation {
public static void main(String args[]) {
int number = 1;
switch(number){
//case 后面跟的是常量不能是变量,且不能重复
case 0:
System.out.println("0");
case 1:
//匹配成功,但是没有break,则继续向下执行其他case的程序,不再看条件;case的穿透性;或者遇到}才会结束
System.out.println("1");
case 2:
System.out.println("2");
case 3:
System.out.println("3");
//遇到break,则停止向下执行
break;
case 4:
System.out.println("4");
//default相当于else的意思
default:
System.out.println("数字有误");
}//1 2 3
}
}
//说明:
①switch case结构根据表达式一次匹配case中的常量。一旦匹配成功,则进入该case结构调用执行语句。当调用完毕后,会继续向下执行其他case结构中语句,直到遇到break或者}才会结束。
②break,表示一旦执行到此关键字,就会跳出switch-case结构;非必写
③switch中的表达式,可以使用的6大数据类型:byte short char int 枚举类型 String;
④case后只能声明常量,且不能重复
⑤switch-case不适用于给出数值太多的数据
ps:switch-case 与 if else结构的区别:
①凡是可用switch-case的都可用if else,反之不成立;优先选择switch-case
总结:switch建议判断固定值的时候使用;if 建议判断区间或范围的时候使用
#switch-case练习
import java.util.Scanner;
public class Operation {
public static void main(String args[]) {
//控制台输入年份,判断是否是闰年
Scanner scan = new Scanner(System.in);
System.out.println("请输入待计算的年份:");
int year = scan.nextInt();
//判断是否是闰年的方法:①可以被4整除,但是不能被100整除;②或者可以被400整除
if ((year % 4 == 0 & year % 100 != 0) || (year % 400 == 0)){
System.out.println("恭喜,您输入的年份是闰年");
}
else{
System.out.println("抱歉,您输入的年份不是闰年");
}
}
}
循环结构
for循环
public class Circulate {
public static void main(String args[]) {
//结构for(初始化;循环条件;迭代条件)
for(int i = 0;i <5;i++){
//循环体
System.out.println("sout");
}
}
}
//for循环练习题1
public class Circulate {
public static void main(String args[]) {
int num1= 1;
for(System.out.println('a');num1 <=3; System.out.println('c'),num1++ ){
System.out.println('b');
}
}
}
//for循环练习题2
public class Circulate {
public static void main(String args[]) {
//遍历1-100内的偶数,并计算偶数和
int sum = 0;//记录偶数和
int count = 0;//记录偶数个数
for(int i =0 ;i<=100;i++){
if(i % 2==0){
System.out.println(i);
//累加操作
sum+=i;
count++;
}
}System.out.println("总和为:"+sum);//2550
System.out.println("偶数个数为" + count);//51
}
}
//for循环练习题3
//在java当中,如果两个if判断同级,if判断条件的代码都会去判断,不管前面的if判断条件是否成立,都会去判断执行下一个if的代码;
//如果是if()else if(){}的话,当前面的if判断条件成立的话,就不会再去判断else if的条件,有多个else if的时候,会去挨个进行判断,只要有一个符合条件,后面的else if都不会再去判断,当前面的判断条件都没成立,并且结尾有一个else,就会执行最后else中的代码。
public class Circulate {
public static void main(String args[]) {
//遍历0-100内数字,2的倍数打印 三的倍数打印
for(int i = 0;i <= 100;i++){
if(i%2 == 0){
System.out.println("2的倍数" + i);
}
if(i%3==0){
System.out.println("3的倍数" + i); ;}
}
}
}
//for循环练习题4
import java.util.Scanner;
public class Circulate {
public static void main(String args[]) {
//求出两个数字的最大公约数
Scanner scan = new Scanner(System.in);
System.out.println("请输入第一个正整数:");
int m = scan.nextInt();
System.out.println("请输入第二个正整数:");
int n = scan.nextInt();
int min = (m <= n) ? m : n;
for (int i = min; i <= min; i--) {
if (i % m == 0 && i % n == 0) {
System.out.println("最大公约数为:" + i);
break;
}
}
//求两个数最小公倍数
int max1 = (m >=n)? m :n;
for(int b=max1;b<=m*n;b++){
if(b % m==0 && b%n==0){
System.out.println("最小公倍数是:"+ b);
break;
}
}
}
}
//for循环练习题5
//求1000内的完数
public class Perfect{
public static void main(String[] args) {
for(int i = 2;i<= 1000;i++){
int sum = 0;
for(int j = 1; j < i ;j++){
if(i % j == 0){
sum += j;
}
}
if(i == sum){
System.out.println(i);
}
}
}
}
while循环结构
public class DoWhile {
public static void main(String args[]) {
//初始化
int i = 0;
//while(循环条件){循环体 迭代条件}
while(i <= 100){
//循环体
if(i% 2 == 0){
System.out.println(i);
}
//不写循环条件,会出现死循环;无线去执行循环
//循环条件
i++;
}
}
}
三种循环的区别:
1.do while结构循环体至少执行一次,for和while必须满足条件才执行
2.for循环的初始化变量作用域仅限于for循环内,而do while和while结构变量不限制
do while循环结构
public class DoWhile {
public static void main(String args[]) {
//遍历1-100中的偶数
//do while结构
//①初始化
int i = 1;
int sum = 0;
do{
//循环体
if(i % 2== 0 ){
sum += i;
System.out.println(sum);
}
//循环迭代
i ++;
}
//循环条件
while (i <=100);
}
}
说明:do - while循环是至少循环一次
#死循环
while(true){
S}