JAVA程序语言基础B(三)

java程序的控制结构

  • 顺序结构
    • 每条语句结束必须以分号;结束
  • 分支结构
    • 两种分支结构
      • if
      • switch
  • 循环结构

分支结构

if

单选条件语句

说明:

​ 条件表达式必须用一对圆括号()括起来

​ 语句体可以是一条语句,也可以是多条语句,若是多条语句,必须用一对花括号{}括起来构成一个复合语句。

双选条件语句
if语句的嵌套

switch语句

也称开关语句

注意:

  1. 表达式类型可为byte、char、short、int或enum类型,并且只能与常量进行比较,如过匹配成功则执行case子句后面的语句序列。
  2. 每个case后面的常量表达式值必须互不相同。
  3. 一个case后可有多个语句(不必用花括号),程序自动执行case后面所有的语句,一个case后面也可以没有任何语句
  4. 使用break语句跳出switch语句,终止switch语句执行
  5. default子句可选,当表达式的值与任何case子句中的常量都不匹配时,程序执行default后面的语句序列。

一些练习

import java.util.Scanner;




public class xunhuan {

	/**
	 * @param args
	 */
//输入两个整数a和b,输出其中较大的一个数	
//	public static void main(String[] args) {
//		// TODO Auto-generated method stub
//		int a,b,max;
//		Scanner sc =new Scanner(System.in);
//		System.out.println("请输入第一个整数:");
//		a = sc.nextInt();
//		System.out.println("请输入第二个整数:");
//		b = sc.nextInt();
//		max =a;
//		if (b>max){
//			max = b;
//		}
//		System.out.println("最大值为:"+max);
//	}
//
//}

//输入两个整数a和b,输出其中较大的数
	public static void main(String[] args) {
		int a,b,max;
		Scanner sc =new Scanner(System.in);
		System.out.println("请输入第一个整数:");
		a = sc.nextInt();
		System.out.println("请输入第二个整数:");
		b = sc.nextInt();
		if(a>b){
			max = a;
		}else{
			max=b;
		}
		System.out.println("最大值是:"+max);
		}



//分段函数
	public static void main (String[] args){
		int x,y;
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入x的的值:");
		x = sc.nextInt();
		if(x<0){
			y=x+1;
		}else if(x<10){
			y=x*x-5;
		}else{
			y=(int)Math.pow(x, 3);
		}
		System.out.println("y的值为:"+y);
	}
}

//if语句的嵌套
import java.util.Scanner;
public class Eample3_4{
	public static	void main(String[] args){
		int x,y;
		Scanner sc =new Scanner(System.in);
		System.out.println("请输入x的值:");
		x = sc.nextInt();
		if(x>=0){
			if(x>=10){
				y=(int)Math.pow(x,3);
			}else{
				y = x*x-5;
			}
		}
		System.out.println("y的值为:"+y);
	}
}


//求3个整数a,b,c中的最大者,a,b,c由键盘输入
import java.uitl.Scanner;
public class Example3_5{
	public static void main(String[] args){
		Scanner sc =new Scanner(System.in);
		int a,b,c,max;
		System.out.println("请输入第一个数:");
		a = sc.nextInt();
		System.out.println("请输入第二个数:");
		b = sc.nextInt();
		System.out.println("请输入第三个数:");
		c = sc.nextInt();
		if(a>b){
			if(a>c)
				max = a;
			else
				max = c;
		}else{
			if(b>c)
				max = b;
			else
				max = c;
		}
		System.out.println("最大的数是:"+max);
	}
}


//根据给定的年月,输出该月的天数
public class Examples3_6{
	public static void main(String[] args){
		int month = 2;
		int year = 2004;
		int numDays = 0;
		switch(month){
		case 1:
		case 3:
		case 5:
		case 7:
		case 8:
		case 10:
		case 12:
			numDays = 31;
			break;
		case 4:
		case 6:
		case 9:
		case 11:
			numDays = 30;
			break;
		case 2:
			if((year%4 == 0&&year%100!=0)||(year%400==0))
				numDays = 29;
			else
				numDays = 28;
		}
		System.out.println("Year:"+year+",month:"+month);
		System.out.println("Number of Days="+numDays);
	}
}

//书上P40:根据购货金额确定好折扣率后,在计算出实付金额
import java.util.Scanner;
public class Example3_7{
	public static void main(String[] args){
		int m,c;
        float d = 0,f;
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入购货金额:");
        m = sc.nextInt();
        if(m>=2000)
            c = 8;
        else
            c = m/205;
        switch(c){
            case 0:
                d=0;
                break;
            case 1:
                d=5;
                break;
            case 2:
            case 3:
                d =7.5F;
                break;
            case 4:
            case 5:
            case 6:
            case 7:
                d = 10;
                break;
            case 8:
                d =15;
                break;
              }
        f = m*(1-d/100);
        System.out.println("实付金额是:"+f);
	}
}

循环语句

初始化部分:设置初始条件,一般只执行一次

终止部分:设置终止条件,它应该是一个布尔表达式,每次循环都要求值一次,用以判断是否满足终止条件

循环体部分:被反复执行的语句块

  • 当型循环
  • 直到型循环
  • for循环和forcash循环

当型循环(while)

表达式称为循环表达式,一般为关系表达式或逻辑表达式,必须用()括起来

语句称为循环体,可以是单个或复合语句

do...while语句

实现“直到型”循环结构

//do...while语句计算S=1+2+3+4+...n
import java.util.Scanner;
public class Example3_9{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        int i,n,sum;
        System.out.println("请输入一个整数:");
        n=sc.nextInt();
        sum=0;
        i=1;
        do{
            sum=sum+i;
            i++;
        }while(i<=n);
        System.out.println("和是:"+sum);
            
    }
}

for语句

import java.util.Scanner;
public class Example3_10{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        int i,n,sum;
        System.out.println("输入一个整数:");
        n = sc.nextInt();
        sum = 0;
        for (i=0;i<=n;i++)
            sum+=i;
        System.out.println("和是:"+sum);
    }
}

break语句

作用:

终止switch语句与单循环语句的执行;

对多重循环语句,可从内循环跳到外循环体

格式:break;

continue语句

作用:

在while或do…while语句中执行到continue语句时,程序不执行continue后的语句,而转向条件表达式处,开始下次循环。

在for语句中执行到continue语句时,程序不执行continue后的语句,而转向for语句中的第3表达式处,开始下一次循环。

格式:continue;

二分查找

给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。

解释:力扣

nums = [-1,0,3,5,9,12], target = 9
//来自力扣
class Solution {
    public int search(int[] nums, int target) {
        //创建数组nums,和整数变量target
        int left = 0, right = nums.length - 1;
        //二分查找,将一组数分成两边,left为左边为0.right为右边为数组的长度减一。
        while(left<=right) {
            int mid = left + (right - left) / 2;
            //mid = 2,nums[mid]不等于target,nums[mid]=3,left=3.
            //3<5,mid = 4,nums[4]=9=target
            if(nums[mid] == target) {
                return mid;
            } else if(nums[mid] > target) {
                right = mid - 1;
            } else {
                left = mid + 1;
            }
        }
        return -1;
    }
}

二分查找是一种基于比较目标值和数组中间元素的教科书式算法。

如果目标值等于中间元素,则找到目标值。
如果目标值较小,继续在左侧搜索。
如果目标值较大,则继续在右侧搜索。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

无法长大的Panda

您的鼓励是最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值