流程控制
流程
if
if
public class Demo {
public static void main(String[] args) {
/**
* if(true/false){
* 语句体
* }
*/
int result =1;
if (result >0) {
System.out.println("Demo.main");
}
}
}
if -else
public class Demo2 {
public static void main(String[] args) {
int a = 5;
if (a % 2==0) {
System.out.println("偶数");
}else {
System.out.println("奇数");
}
String result = a%2==0?"偶数":"奇数";
System.out.println(result);
}
}
if-else if -else
public class Demo3 {
public static void main(String[] args) {
int score = 40;
String s;
if (score>=90) {
s="A";
}else if(score>=80){
s="B";
}else if(score>=70){
s="C";
}else if(score>=60){
s="D";
}else {
s="E";
}
System.out.println(s);
//特殊情况 if(){只有一句代码} {}可以忽略,但不建议
}
}
案例:判断是否是闰年
public class Demo4 {
public static void main(String[] args) {
Demo4 demo4 = new Demo4();
boolean flag = demo4.IsRunYear(2100);
if (flag == true) {
System.out.println("闰年");
}else {
System.out.println("不是闰年");
}
}
/**
* @param year
* @return
*/
public boolean IsRunYear(int year){
if (year%4==0&&year%100!=0){
return true;
}else if (year%400==0){
return true;
}else {
return false;
}
}
}
switch
案例1
public class Demo5 {
public static void main(String[] args) {
int model =5;
switch (model){
case 0:
System.out.println("0号模式");
break;
case 1:
System.out.println("1号模式");
break;
case 2:
System.out.println("2号模式");
break;
default:
System.out.println("非法数字");
}
}
}
案例2
public class Demo6 {
public String getDay(int day){
String result;
switch (day){
case 0:
result ="周末";
break;
case 1:
result ="周1";
break;
case 2:
result ="周2";
break;
case 3:
result ="周3";
break;
case 4:
result ="周4";
break;
case 5:
result ="周5";
break;
case 6:
result ="周6";
break;
default:
return result = "非法数字";
}
return result;
}
public static void main(String[] args) {
Demo6 demo6 = new Demo6();
String s =demo6.getDay(7);
System.out.println(s);
}
}
案例3
public class Demo7 {
public int getDay(int year,int month){
int result;
switch (month){
case 4:
case 6:
case 9:
case 10:
result =30;
break;
case 2:
result = year%4==0&&year%100!=0||year%400==0?29:28;
break;
default:
result = 31;
}
return result;
}
public static void main(String[] args) {
Demo7 demo7 = new Demo7();
int a = demo7.getDay(2022,2);
System.out.println(a);
System.out.println(demo7.getDay(2000,2));
}
}
switch 中可以调用方法
for
案例
public class Demo {
public static void main(String[] args) {
/**
* for(初始化语句;条件判断语句;条件控制语句){
* 循环语句
* }
*/
Demo demo = new Demo();
demo.test();
demo.test2();
demo.test3();
}
//在控制台输出1-5和5-1
public void test(){
for (int i=1;i<=5;i++){
System.out.print(i);
}
System.out.println();
for (int i=5;i>0;i--){
System.out.print(i);
}
System.out.println();
}
//求累加和并打印
public void test2(){
int sum =0;
for (int i=1;i<=5;i++){
sum=sum+i;
}
System.out.println(sum);
}
//1-100偶数和
public void test3(){
int sum =0;
int sum2=0;
for (int i=1;i<=100;i++){
if(i%2==0){
sum=sum+i;
}else {
sum2 = sum2 +i;
}
}
System.out.println(sum);
System.out.println(sum2);
}
//死循环
public void test4(){
//情况1:反接近于终止条件
for (int i =1;i<10;i--){
System.out.println(i);
}
//情况2:缺少终止条件
for (int i =0;;i++){
System.out.println(i);
}
//情况3:服务器,定时器会用
// for (;;){
// System.out.println("i");
// }
}
}
嵌套案例
public class Demo4 {
public static void main(String[] args) {
test();
test2();
test3();
test4();
test5();
}
private static void test5() {
int n =5;
for (int i = 1; i < n; i++) {
for (int j =1;j<=n-i;j++){
System.out.print(" ");
}
for (int j=1;j<=2*i-1;j++){
System.out.print("★");
}
System.out.println();
}
}
private static void test4() {
for (int i = 0; i < 5; i++) {
for (int i1 = 0; i1 <=i; i1++) {
System.out.print("★");
}
System.out.println();
}
}
private static void test3() {
for (int i = 0; i < 5; i++) {
for (int i1 = 0; i1 < 10; i1++) {
System.out.print("★");
}
System.out.println();
}
}
private static void test2() {
for (int i=0;i<10;i++){
System.out.print("★");
}
System.out.println();
}
private static void test() {
for (int i = 0; i < 4; i++) {
System.out.println(i);
}
}
}
while
案例
public class Demo2 {
public static void main(String[] args) {
test();
test2();
test3();
}
//死循环
private static void test3() {
boolean a = true;
while (a){
System.out.println("hello");
}
}
private static void test2() {
int count =0;
double i = 0.1;
while (i<=884443){
i=i*2;
count ++;
}
System.out.println(count);
}
private static void test() {
int random = (int) (10*Math.random());//生成0-1的小数
while (random != 5) {
random = (int) (10*Math.random());
System.out.println(random);
}
}
}
while循环使用条件:不明确循环次数
for循环使用场景:明确循环次数,嵌套循环
do-while
案例
public class Demo3 {
public static void main(String[] args) {
/**
* do{
* 循环语句
* }while(循环条件);
*/
test();
test2();
}
//生成随机数 5结束
private static void test() {
int i = -1;
do {
i = (int)(Math.random()*10);
System.out.println(i);
}while (i!=5);
}
private static void test2() {
int i = -1;
do {
//即使条件不满足 也可以执行一次
System.out.println(i);
}while (i>0);
}
}
控制
break :停止循环
public class Demo5 {
public static void main(String[] args) {
test();
test2();
}
private static void test2() {
boolean flag = true;
int i =0;
while (flag){
i++;
System.out.println(i);
if (i==5){
break;
//flag = false //也可以退出循环
}
}
}
private static void test() {
for (int i=0;i<=10;i++){
if (i==5){
break;
}
System.out.println(i);
}
}
}
continue:结束本次循环
public class Demo6 {
public static void main(String[] args) {
test();
test2();
}
//死循环
private static void test2() {
boolean flag = true;
int i =0;
while (flag){
i++;
if (i==5){
continue;
}
System.out.println(i);
}
}
private static void test() {
for (int i = 0; i <= 10; i++) {
if (i==5){
continue;
}
System.out.println(i);
}
}
}
break + label :跳出任意循环
public class Demo7 {
public static void main(String[] args) {
test();
test2();
test3();
}
//break问题:无法解决外层循环
private static void test() {
for (int i = 1; i < 4; i++) {
for (int j = 1; j < 5; j++) {
System.out.println("i = " + i +" "+ "j = "+j);
if (j==2){
break;
}
}
}
}
private static void test2() {
for (int i = 1; i < 4; i++) {
for (int j = 1; j < 5; j++) {
if (j==2){
continue;
}
System.out.println("i = " + i +" "+ "j = "+j);
}
}
}
//break + label 可以跳出任意循环;
private static void test3() {
loop:for (int i = 1; i < 4; i++) {
loop2:for (int j = 1; j < 5; j++) {
System.out.println("i = " + i +" "+ "j = "+j);
if (j==2){
break loop;
}
}
}
}
}
return:结束整个方法,也能终结循环
public class Demo8 {
public static void main(String[] args) {
test();
}
private static void test() {
for (int i = 1; i < 4; i++) {
for (int j = 1; j < 5; j++) {
System.out.println("i = " + i +" "+ "j = "+j);
if (j==2){
return;
}
}
}
}
}
案例
public class Demo9 {
public static void main(String[] args) {
test();
}
//程序运行后可多次查询星期对应的减肥计划,知道输入0,程序结束
//分支结构
//循环结构 多次while(true)
private static void test() {
//从标准输入流 读文本(键盘) 模板类 = 对象
Scanner sc = new Scanner(System.in);
System.out.println("请输入");
int i = sc.nextInt();//阻塞流 等待输入
boolean flag = true;
while (flag){
i = sc.nextInt();//阻塞流 等待输入
switch (i){
case 0:
System.out.println("0");
break;
case 1:
System.out.println("1");
break;
case 3:
System.out.println("3");
break;
case 2:
System.out.println("2");
break;
case 9:
//方法一 终止循环
flag =false;
break;
//方法二
//return;
//方法三 break + label;
default:
System.out.println("不鸡丢");
}
}
}
}
猜数游戏
public class Demo10 {
public static void main(String[] args) {
test();
test2();
}
private static void test2() {
boolean flag = true;
Scanner sc = new Scanner(System.in);
//系统生成的值
Random random = new Random();
int r = random.nextInt(100)+1;
System.out.println("隐藏值:"+r);
while (flag){
//玩家输入的值
System.out.println("请输入");
int n = sc.nextInt();
if (n>r){
System.out.println("大了");
}else if (n<r){
System.out.println("小了");
}else {
System.out.println("猜对了");
flag = false;
}
}
}
private static void test() {
Random random = new Random();
int i = random.nextInt();
for (int i1 = 0; i1 < 50; i1++) {
int n = random.nextInt(10);
System.out.println(n);
}
}
}