java编程基础

2 篇文章 0 订阅
1 篇文章 0 订阅

java编程基础2

8、程序流程结构

8.1顺序结构

从上到下循序执行

8.2if选择结构

8.2.1结构语法

if(条件boolean){} / if(条件boolean){} else{}

###类型

  1. if(条件1){} ……if(条件n){}

  2. if(条件1){} else if(条件2){} …… else if(条件n){}else{}

  3. if(条件1){

      	if(条件2){
           	
      					……
           	
      						……
           	
      						if(条件n){
           	
      						}else{
           	
      						}
           	
      	}else{
           	
      	}
    

}else{

  	if(条件3){
     	
  					……
     	
  						……
     	
  	}else{
     	
  				if(条件n){
     	
  				}else{
     	
  				}
     	
  	}
     	
  }

8.2.2 执行规则

  1. if语句顺序执行
  2. 当有if成立则不往下执行else
  /*
  二十一点游戏
    1、玩家(你)和BOOS(我)先各取两个10以下的正整数两个;
    2、取一个公用数然后询问玩家是否还需要数字;
    3、判断输赢;
    规则:
    1、三/四次取数之和不得打于21;
    2、比较数字大小,值大者胜,相同庄家胜;
    3、
  */
import java.util.Random;  // 引用随机数
import java.util.Scanner; //输入导包
public class Tes5{
	public static void main(String[] args){
		Scanner sc = new Scanner(System.in); //定义输入器
        Random random = new Random(); //定义数据
        
        /*
        *取两个随机数
        *输出两个随机数,使用输出函数
        */
        		
		int m0 = (int)(Math.random()*10);
		System.out.print("BOOS:21点游戏\n");

		int m = (int)(Math.random()*10);
		System.out.print("BOOS:我的第一个数是:");
		System.out.print("*");
		System.out.print("\n");

		int ma = (int)(Math.random()*10);
        		System.out.print("BOOS:你的第一个数是:");
		System.out.print(ma);
		System.out.print("\n");
	
		int m2 = (int)(Math.random()*10);
		System.out.print("BOOS:我的第二个数是:");
		System.out.print("*");
		System.out.print("\n");

		int mb = (int)(Math.random()*10);
        		System.out.print("BOOS:你的第二个数是:");
		System.out.print(mb);
		System.out.print("\n");
		
		System.out.print("BOOS:公用数是:"+m0 +"\n" );
        
       	/*
       	让玩家输入是否继续,使用输入函数
       	判断胜负,嵌套if语句使用
       	*/
		System.out.print("BOOS:你的二个数是:"+ma + mb+"\n" );	
		System.out.print("BOOS:你还需要数字吗?需要请输1\n");
		int num =sc.nextInt();
		if( num == 1 ){ 
			int mc = (int)(Math.random()*10);
        			System.out.print("BOOS:你的第三个数是:");
			System.out.print(mc);
			System.out.print("\n");
		
			int m3 = (int)(Math.random()*10);
			System.out.print("BOOS:我的第三个数是:");
			System.out.print(m3);
			System.out.print("\n");
		
			int u = ma + mb +mc+m0;
			int v = m + m2 +m3+m0;
	
			if( 22 > u  ){	 //简单if()else{}结构
				if ( u>v ){	 //多重if结构使用
					System.out.print("你赢了\n");
				}else
                if ( u<v ){
					System.out.print("Game Over!!!\n");
                    System.out.print("我的三个数是\n" + m+m3 + m2+"\n");
				}	
			}else{
				System.out.print("你飘了!!!\n");
				System.out.print("我的三个数是\n" + m+m3 + m2+"\n");
			}
		
		}else{
			int u1 = ma + mb+m0;  //  定义数据类型并运算赋值
			int v1 = m + m2+m0;

			if( 22 > u1  ){   //嵌套if结构使用
				if ( u1>v1 ){
					System.out.print("你赢了\n");
				}else{
					System.out.print("Game Over!!!\n");
				}	
			}else{
				System.out.print("你飘了!!!\n");
				System.out.print("我的三个数是\n" +m + m2+"\n");
			}

    	}
		
		
	}
}
``

8.3 switch选择结构

8.3.1结构语法

switch(表达式)}{

case常量值1:

​ break;

​ ……

​ ……

case常量值n:

​ break;

default:

​ break;

}

8.3.2特点

1、switch语句称为情况选择语句,又称为开关语句。

2、switch是分支语句的一种,用于对多种情况进行不同处理的语句。

3、JDK1.7 之前的switch语句限定对整形数据进行判断。

8.3.3switch语句的“贯穿”现象

当上一个case没break结尾时上边语句会贯穿到下面语句

例如:

System.out.print(“输入今年的一个月份”);

int m=input.nextInt();

switch(m){

​ case 1:

​ case 3:

​ case 4:

​ case 5:

​ case 5:

​ case 7:

​ case 10:

​ case 12: System.out.print(“这个月有5个周日”);

​ break;

​ case 2:

​ case 8:

​ case 9:

​ case 11: System.out.print(“这个月有4个周日”);

​ break;

}

当输入值是1、3、4、5、6、7、10、12的时候都输出“这个月有5个周日”

package Class20220606;
import java.util.Scanner;
public class Work4 {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		System.out.print("请输入月份:");
		int month = sc.nextInt();	
		
		switch(month){
		case 1:
		case 3:
		case 5:
		case 7:	
		case 10:
		case 8:	
		case 12:System.out.print("这个月31天");
			break;
		case 2:System.out.print("这个月共28天");
			break;
		case 4:
		case 11:
		case 6:
		case 9:System.out.print("这个月共30天");
			break;
		default:System.out.print("你是认真的吗!!!"); 
			break;
		}		
	}
}

8.4while循环结构

8.4.1结构语法

while(循环条件){

}

8.4.2特点

**执行流程:**先判断循环条件,条件如果成立,就执行循环操作;循环操作执行完成,继续判断条件;
条件如果成立,就执行循环操作;。。。直到条件不成立,循环结束。
特点:先判断,再执行
如果条件不成立,循环操作可能一次都不执行

8.5do{}while循环结构

8.5.1结构语法

Do{

}while(循环条件);

8.5.2特点

执行:先执行一遍循环操作,然后判断条件,条件成立,就继续执行操作;
循环操作执行结束,继续判断条件;。。。。。直到循环条件不成立,循环结束。
特点:先执行,后判断
循环操作至少会执行一次

/*
 * 3、求两个数最大公约数
 * 分析:
 * 1、确定循环内容:两个数的公约数是可以同事整除两数的数,
 * 	即依次用同一个数对两数求余
 * 
 * 2、确定循环条件:
 * 	一个数最大只可以被自己整除,
 * 	那么两数最大公约数最大最多和小的数相等;
 * 	如果
 * 		两数相等 	公约数是两数本身 	不用循环
 * 		两数不相等		最大公约数小于两数小的数 	 [1,小的数]	
 * 		
 * 
 * 
 */
public class Work3 {
	public static void main(String[] args) {
		// 定义常量
		final int NUM0 = 91; 
		final int NUM1 = 27;
		
		int n = NUM1-1;//定义循环变量,递减
		while(NUM1%n != 0 || 0 != NUM0%n ) {
			n--;
			}
		
		System.out.print(NUM0 +"和"+ NUM1+"的最大公约数是"+(n)+"\n");
		// 定义变量
		int num0 = 99;
		int num1 = 81;
		int m1=0;
		//定义循环变量,递曾(不是最优,可能多出必要的循环次数)
		
			for(int m=1; m<=num1;m++)  {
				if(num1%m == 0 && num0%m == 0) {
					m1=m ;
				}
					
			}
		
		
		System.out.print(num0+"和"+num1+"的最大公约数是"+m1);
	}
}

8.6for循环

8.6.1结构语法

for(定义循环变量; 循环条件; 循环变量的更新){

循环操作

}

8.6.1特点

特点:循环次数固定

/*
 * 3、求两个数最大公约数
 * 分析:
 * 1、确定循环内容:两个数的公约数是可以同事整除两数的数,
 * 	即依次用同一个数对两数求余
 * 
 * 2、确定循环条件:
 * 	一个数最大只可以被自己整除,
 * 	那么两数最大公约数最大最多和小的数相等;
 * 	如果
 * 		两数相等 	公约数是两数本身 	不用循环
 * 		两数不相等		最大公约数小于两数小的数 	 [1,小的数的值]	
 * 		
 * 
 * 
 */
public class Work3 {
	public static void main(String[] args) {
		// 定义常量
		final int NUM0 = 91; 
		final int NUM1 = 27;
		
		int n = NUM1-1;//定义循环变量,递减
		while(NUM1%n != 0 || 0 != NUM0%n ) {
			n--;
			}
		
		System.out.print(NUM0 +"和"+ NUM1+"的最大公约数是"+(n)+"\n");
		// 定义变量
		int num0 = 99;
		int num1 = 81;
		int m1=0;
		//定义循环变量,递曾(不是最优,可能多出必要的循环次数)
		
			for(int m=1; m<=num1;m++)  {
				if(num1%m == 0 && num0%m == 0) {
					m1=m ;
				}
					
			}
		
		
		System.out.print(num0+"和"+num1+"的最大公约数是"+m1);
	}
}

8.7双重循环

循环中可以嵌套循环,嵌套两层就叫双重循环。 双重循环的特点:外层循环执行一轮,内层循环执行一遍。总共执行次数n*m。

public class Star{
       public static void main(String[] args){
           for(int i=1;i<=5;i++){ //外层循环控制行,循环5次
               for(int j=1;j<=i ;j++){ //内层循环控制行
                   System.out.print("*");
               }
               System.out.println();
           }
       }
}

运行结果

*

* *

* * *

* * * *

* * * * *

8.8continue和break

continue;

可以打断不执行本轮循环,但不影响后面的程序运行

break;

跳出程序

9、数组

java数组特点

1、Java语言中的数组是一种 引用数据类型

2、数组实际上是一个存在堆的一个容器,可以同时容纳多个元素。

3、元素可以为空,数组长度不能变

3、各个元素数据类型必须类型统一

声明数组和定义长度

声明:

数据类型[] 数组名;

数据类型 数组名[];

定义长度:

数组名 = new 数据类型[长度];

数组赋值

数组名[下标] = 值;

数组名 = new 数据类型[]{值1,值2, …… ,值n};

遍历

所谓**遍历(Traversal)**是指沿着某条搜索路线,依次对树中每个结点均做一次且仅做一次访问。

遍历数组:for(int n:nums){

​ System.out.print(num+" ");

​ }

数组排序

冒泡排序

排序规则: 1、相邻两数比较,小数在前,大数在后,如果不符合就交换

​ 2、直到不需要再交换为止

public class Maopao{
    public static void main(String[] args){
        int[] nums=new int[6];               //对该数组进行排序
      	//遍历数组下标为0到最大长度减一的数
        for(int i=0;i<nums.length-1;i++){
        		//遍历的数每次循环减少一个
            for(int j=0;j<nums.length-i-1;j++){			
                if(arr[j]<arr[j+1]){				//比较大小 大的在后面
                    int temp=arr[j];
                    arr[j]=arr[j+1];
                    arr[j+1]=temp;
                }
            }
        }
      
     		 //遍历的数组中的数字
        for(int i=0;i<nums.length;i++){
            System.out.print(nums[i]+" ");				//打印
        }
    }
}
Arrays.sort

**用法:**Arrays.sort(需排序的数组名)

int[] nums= {71,2,44,23}; Arrays.sort(nums);//升序
for (int i = 0; i < nums.length; i++) {
    System.out.println(nums[i]);
}

选择排序

 public class XuanZe{
    public static void main(String[] args){
        int[] nums={2,3,5,6,1,4};         //对该数组进行排序
      	//遍历数组下标[0,nums.length]     
        for(int i=0;i<nums.length-1;i++){              
          	//遍历数组下标[i+1,nums.length]
            for(int j=i+1;j<nums.length;j++){	        
                if(arr[i]>nums[j]){	//比较大小,
                  	//如果前者比后者大则交换两个角标对应的值					
                    int temp=nums[i];
                    nums[i]=nums[j];
                    nums[j]=temp;
                }
            }
        }
        for(int i=0;i<nums.length;i++){
            System.out.print(nums[i]+" ");     //打印排序后的值
        }
    }
}

插入排序

/**
往升序序数列中插入一个数,使之仍然有序 
1、确定插入点的位置index 
2、[len-2,index]依次往后移 
3、nums[index]=n
*/
public static void main(String[] args){		
        int[] arr=new int[8];
  			arr[1]=2;
        arr[2]=4;
        arr[3]=8;
        arr[4]=36;
        arr[5]=72;
        arr[6]=108;
  			int		len=arr.length;
        int   n=81;
          
        //1、确定插入点的位置index
        for(int i=0;i<len-1;i++){			
    				if(arr[i]>len-1){
              break;
            }
        // [len-2,index]依次往后移 
       for (int i = len-2; i >=index; i--) {
   				 arr[i+1]=arr[i];
			 }
          
       //3、nums[index]=n   
       arr[index]=n;
       for(int m:arr){
         	System.out.print(num+" ");
       }   
  }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值