流程控制(分支,循环)

基本结构:顺序结构,分支结构,循环结构

if-else

if(条件表达式1){

        执行代码块1;

}

else {

        执行表达式2

}

if(条件表达式1){

        执行代码块1;

}

else if(条件表达式2){ 

        执行表达式2

}

......

else{

}

 定义三个数,找出最大的数

//写的比较复杂
public class Test {

    public static void main(String[] args) {
    	int a = 153;
    	int b = 345;
    	int c = 618;
    	if(a>b){
    		if(a>c){
    			System.out.println("最大数为:"+a);
    		}else{
    		System.out.println("最大数为:"+c);
    	}
    	}
    		else if(b>c){
    		System.out.println("最大数为:"+b);
    	}
    		else{
    	System.out.println("最大数为:"+c);
	
    		}
 
        
}
}

//这个感觉更好一点
public class Test {

    public static void main(String[] args) {
    	int a = 153;
    	int b = 345;
    	int c = 618;
    	int max;
    	if(a>b && a>c){
    		max=a;
    	}else if(b>a && b>c){
    		max = b;
    	}
    	else{
    		max=c;
    	}
    	System.out.println("最大值为:"+max);    	
 
        
}
}

 声明两个double变量赋值,判断第一个数大于10.0,第二个数小于20.0,打印之和,否则乘积

public class ZUOYE {

    public static void main(String[] args) {
    	double a = 153.0;
    	double b = 5.0;
    	double sum;
    	if(a>10.0 && b<20.0){
    		sum=a+b;
    	}
    	else{
    		sum=a*b;
    	}
    	System.out.println(sum);    	
 
        
}
}

 这些都太简单,已经不想练习,不想再往上打了,复习进度太慢了。。。。

输入语句 Scanner

具体步骤

1.导包:import java.util.Scanner;

2.Scanner的实例化;     Scanner scan = new Scanner (System.in)

3.调用Scanner类的相关方法,来获取指定的变量。 int num = scan.nextInt();

  岳小鹏参加Java考试,他和父亲岳不群达成承诺: 如果:成绩为100分时,奖励一辆BMW; 成绩为(80,99]时,奖励一台iphone ; 当成绩为[60,80]时,奖励一个iPad; 其它时,什么奖励也没有。 请从键盘输入岳小鹏的期末成绩,并加以判断

import java.util.Scanner;

public class Test {

    public static void main(String[] args) {
    	Scanner scan =new Scanner(System.in);
    	int score = scan.nextInt();
    	
    	if(score==100){
    		System.out.println("BMW");  
    	}
    	else if(score>80 && score<=99){
    		System.out.println("Iphone");    
    	}
    	else if(score>60&&score<=80){
    		System.out.println("ipad");       	
 
    	}
    	else{
    		System.out.println("none");
    	}
}
}

 虽然简单,虽然浪费时间,但多敲敲没坏处

狗的年龄问题:

import java.util.Scanner;

public class Test {

    public static void main(String[] args) {
    	@SuppressWarnings("resource")
		Scanner scan =new Scanner(System.in);
    	int dogage = scan.nextInt();
    	double age;
    	
    	if(dogage>2){
    		age = 2*10.5+(dogage-2)*4;
    	}
    	else{
    		age = dogage*10.5;
    	}
    	System.out.println("狗的年龄为"+age);
}
}

 Switch-case

格式: 

  switch(表达式){

case 常量1:

         执行语句1;

//break;

case 常量2:

          执行语句2;

//break; ...

default:

           执行语句n:

//break;

}

说明:

  • 根据switch表达式中的值,依次匹配各个case中的常量。一旦匹配成功,进入相应case结构中,执行相关语句。 当调用完执行语句后,则仍然继续向下执行其他case语句,直到遇到break关键字或末尾结束为止。
  • break, 可以使用switch-case结构中,表示一旦执行到此关键字,就跳出switch-case结构。

  • switch结构中的表达式,只能是如下的六种数据类型之一:byte、short、char、int、枚举类型(JDK5.0)、String类型(JDK7.0)

  •  case 之后只能声明常量。不能声明范围。

  •  break关键字是可选的,加不加根据实际情况。

  •  default:相当于if-else结构中的else。
                default 结构是可选的,而且位置是灵活的。
     

 编写程序:

从键盘上输入2020年的“month”和“day”, 要求通过程序输出输入的日期为2019年的第几天。

import java.util.Scanner;
class DayTest{
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		System.out.println("请输入2020年的month");
		int month = scan.nextInt();
		System.out.println("请输入2020年的day");
		int day = scan.nextInt();

		//定义一个变量来保存天数
		int sumDays = 0;
		switch(month){
		case 12:
			sumDays += 30;
		case 11:
			sumDays += 31;
		case 10:
			sumDays += 30;
		case 9:
			sumDays += 31;
		case 8:
			sumDays += 31;
		case 7:
			sumDays += 30;
		case 6:
			sumDays += 31;
		case 5:
            sumDays += 30;
		case 4:
			sumDays += 31;
		case 3:
			sumDays += 29;
		case 2:
			sumDays += 31;
		case 1:
			sumDays += day;
		}

		System.out.println("2020年" + month + "月" + day + "日是当年的第" + sumDays + "天");
	}
}

for循环

格式

for(①初始化部分;②循环条件部分;④迭代部分){     //循环条件是布尔类型

     ③循环体部分;

 练习: 

遍历100以内的偶数 偶数和 偶数个数 

int sum;
int a = 0;
for(int i = 0;i <= 100;i++){
    if(i % 2 ==0){
       System.out.println(i);
       sum += i; 
       a++;
}
}
System.out.println(sum);
System.out.println(a);

编写程序从1循环到150,并在每行打印一个值, 另外在每个3的倍数行上打印出“foo”, 在每个5的倍数行上打印“biz”, 在每个7的倍数行上打印输出“baz”。

public class Test {

    public static void main(String[] args) {
    	for(int i = 1;i<=150;i++){
    		System.out.print(i);
    		if(i%3==0){
    			System.out.print("foo ");
    		}
    		if (i%5==0){
    			System.out.print("biz ");
    	}
    		if (i%7==0){
    			System.out.print("baz ");
    		}
    		System.out.println();
           
    	
}
}
}

输入两个正整数m和n,求其最大公约数和最小公倍数。 比如:12和20的最大公约数是4,最小公倍数是60。说明:break关键字的使用

//求最大就倒着找,求最小就正着找,找到第一个就break
public class Test {

    public static void main(String[] args) {
    	int m = 12;
    	int n = 20;
  
    	for(int i = 12;i>1;i--){
    		
    		if(m%i==0 && n%i==0){
    			System.out.println("最大公约数为: "+i);
    			break;
    		
    		}
   		
    	}
 	    for(int i = 20;i<=m*n;i++){
    		
    		if(i%m==0 && i% n==0){
    			System.out.println("最小公倍数: "+i);
    			break;
    		
    		}	   		
    	}
    		
}
}

While循环

结构

①初始化部分

while(②循环条件部分){

③循环体部分;

④迭代部分;

}

说明:

 写while循环千万要小心不要丢了迭代条件。一旦丢了,就可能导致死循环!

2.写程序要避免死循环。

3.能用while循环的,可以用for循环,反之亦然。二者可以相互转换。

区别:for循环和while循环的初始化条件部分的作用范围不同。

算法:有限性。

do-while循环

结构 

①初始化条件
do{
	③循环体;
	④迭代条件;
}
while(②循环条件 布尔类型);

从键盘读入个数不确定的整数,并判断读入的正数和负数的个数,输入为0时结束程序。


public class Test {

    public static void main(String[] args) {
    	
    	@SuppressWarnings("resource")
		Scanner scan = new Scanner(System.in);
    	int zhengs = 0;
    	int fus = 0;
    	
		while(true){                         //进入循环
    		System.out.println("输入一个整数");
    		int num =scan.nextInt();
    		//break; 
    		if(num > 0){
    			zhengs++;
    		}
    		else if(num<0){
    			fus++;
    		}
    		else{                          //跳出循环
    			break;
    		}
    		
    	}
		System.out.println("正数:"+zhengs);
		System.out.println("负数:"+fus);
		
    
    	
    		}
   		
    	
 	   
    		
}

嵌套循环: 

练习

输出:

*

**

***

****

*****

public class Test {

    public static void main(String[] args) {
    	
    	for(int j=1;j<=5;j++){
    		for(int i=1;i<=j;i++){
    			System.out.print("*");
    		}
    		System.out.println();
    	}
		    
    	
    		}
   		
    	
 	   
    		
}

 *****
****
***
**
*

for(int j=5;j>=0;j--){
    		for(int i=5;i>=(6-j);i--){
    			System.out.print("*");
    		}
    		System.out.println();
    	}


//或者下面这种:

for(int j=1;j<=5;j++){
    		for(int i=1;i<=(6-j);i++){
    			System.out.print("*");
    		}
    		System.out.println();
    	}

 九九乘法表

public class Main {
	public static void main(String[] args) {
	
        	for(int j=1;j<=9;j++){
    		for(int i=1;i<=j;i++){
    			System.out.print(i+"*"+j+"="+i*j+" ");
    		}
    		System.out.println();
    	}
	}
}

输出100以内的质数

public class Test {

    public static void main(String[] args) {
    	boolean isFlag=true;
    	
    	for(int j=2 ;j<=100;j++){
    		for(int i=2;i<j;i++){
    			if(j%i==0){
    				isFlag=false;
                    break;       //优化	
    				
    	    		}
    			}
    		if(isFlag==true){
    			System.out.println(j);
    			
    		}
    		isFlag=true;   //重置isFlag
    	}
    }
}

break和continue

public class Test {

    public static void main(String[] args) {
    	for(int i = 1;i <= 4;i++){

				if(i % 4 == 0){
			          break;	//默认跳出当前循环,输出123
					//continue; //跳出当次循环,输出123567910
				}
				System.out.print(i);
			}
			
	}
}
public class Test {

    public static void main(String[] args) {
    	for(int i = 1;i <= 4;i++){
    		for(int j =1;j <=10; j++){		
				if(j % 4 == 0){
			         // break;	//默认跳出当前循环,输出123 三行
					continue; //跳出当次循环,输出123567910 三行
				}
				System.out.print(j);
			}
    		System.out.println();
    		
			
	}
}
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值