java语言基础

3.01顺序结构
流程控制语句:流程控制语句即就是程序运行时,各条语句的执行顺序对程序的影响,流程控制语句不都是按照顺序结构执行的,还有选择结构与循环结构,并通过不同结构执行语句完成程序的不同功能。

顺序结构:顺序结构的程序设计是最简单的,只要按照解决问题的顺序写出相应的语句就行,它的执行顺序是自上而下,依次执行,中间没有任何的判断及跳转。举例说明;顺序结构如同一条笔直的马路,从路的这端走到那端,没有任何的岔路和弯路。
3.02选择结构
选择结构:给定判断条件,根据判断结果和某些条件,来选择控制程序的流程。常见的选择结构语句有 if语句和switch语句。
if语句是一个结构,允许程序确定执行的路径,根据判断条件来选择合适的路径执行语句,实现程序的功能 。
单if语句
在这里插入图片描述
如图所示的流程图是java中执行if语句的语法,转换位代码如下所示
if(布尔表达式){
(执行语句组)
}
当布尔表达式为真时,执行大括号中的语句体,如果布尔表达式为假,则跳过语句体,执行其他的语句。
常见的if语句中的错误有以下几点;
1.布尔表达式需要加括号,不加括号可以让代码更加简短,但是容易产生错误。
2.在if行出现错误的 分号“;”。
3.忘记必要的大括号,如果块语句中只有一条语句,就可以忽略大括号,但是如果称呼嫌多条语句出现在括号内时,则需要把if语句块中的语句组用大括号括在一起与其他语句组分开,避免程序设计错误。
4.对布尔值的冗余测试,例如

if(even==true){
		System.out.println("It is even");
}

这条语句没有编译错误,但是这样做even如果是false,则不会执行下面的语句组,其正确的做法是

if(even){
		System.out.println("It  is  even");
}

4.悬空else出现歧义,一个if与一个else匹配,当else缩进出错时,else匹配其他的if。错误的范例如下:

> int i=1,j=2,k=3;
>  if(i>j) 	
>    if(i>k) 		
>     System.out.println("A");
>  else
> 		System.out.println("B");
> 正确的缩进格式

正确的缩进else需要与第二个if对其,否则会造成悬空歧义
5.两个浮点数值的相等测试,浮点数具有有限的计算精度;涉及浮点数的计算可能引入取整错误,例如

> int i=1.0;
if((i-0.1-0.1-0.1-0.1-0.1==0.5){
		System.out.println("true");
}

if 中的布尔表达式结果,i-0.1-0.1-0.1-0.1-0.1并不是精确等于0.5,而是0.5000000000000001,所以该布尔表达式一直判断为false,不便于给定小数与计算后的小数做比较。
Math.abs(A)返回A的绝对值
6.简化布尔变量赋值,范例如下

int i=1.0;
if((i-0.1-0.1-0.1-0.1-0.1==0.5){
		System.out.println("true");
}
 等价于②中所示的情况,如下
 boolean  even=number%2==0;
 ②中的代码形式更加的简洁,方便。
 **3.02嵌套的if语句和多分支if-else语句**
 if的语句可以在另外一个if语句中,形成嵌套的if语句;例如下面就是一个嵌套的if语句
> int i=1.0;
if((i-0.1-0.1-0.1-0.1-0.1==0.5){
		System.out.println("true");
}
 	嵌套的if语句可用于实现多重选择。

例题如下
让电脑随机产生一个三位数 作为彩票的中奖号码,提示用输入一个三位数,中奖规则如下:
①如果所输入的数字匹配彩票的实际顺序,奖金为10000美元
②如果用户输入的所有匹配数字匹配彩票的所有数字,奖金为3000美元
③如果用户输入的一个数字匹配彩票的一个数字,奖金为1000美元
注释:
1.数据:电脑随机产生一个三位数, 用户输入一个三位数
2.指令: num=(int)(Math.random()*1000), Scanner scanner=new Scanner(System.in) int n=scanner.nextInt();接受输入的数字
判断数字是否匹配
先判断n==num;如果匹配 中奖10000美元
如果不匹配,进行第二次判断 n中的数字是否与num中的数字匹配,
把n拆分成 a b c 三个,

> a=n%10;
n/=10;
b=n%10;
n/=10;
c=n%10;

分别代表n的个位,十位,百位,重新排列组合是否能等于num,如果等于num中奖3000美元,
如果不匹配,进行第三次判断n中的数字与num中的数字逐个进行判断,假设num中的数字取出来 分别是a1 b1 c1,判断条件如下

> a==a1||a==b1||a==c1||b==a1||b==b1||b==c1||c==a1||c==b1||c==c1,

其中只要有一个数字符合,则不用再继续判断,如果没有,打印谢谢参与 ,程序结束

> import java.util.Scanner;
class day06{
    public static void main(String[] args){
        int num=(int)(Math.random()*1000);
        int i=num;
        System.out.println(i);
        int a1=num%10;
        num/=10;
        int b1=num%10;
        num/=10;
        int c1=num%10;
        Scanner scanner=new Scanner(System.in);
        System.out.print("please input three number between 0 to 999:");
        int n=scanner.nextInt();
        int h=n;
        int a2=n%10;
        n/=10;
        int b2=n%10;
        n/=10;
        int c2=n%10;
        if(num==i){
            System.out.println("一等奖10000美元!");
        }else if((a2*100+b2*100+c2==i)||(a2*100+c2*10+b2==i)||(b2*100+c2*10+a2==i)||(b2*100+a2*10+c2==i)||(c2*100+a2*10+b2==i)){
            System.out.println("二等奖3000美元!");
        }else if(a2==a1||a2==b1||a2==c1||b2==a1||b2==b1||b2==c1||c2==c1||c2==b1||c2==a1){
            System.out.println("三等奖1000美元!");
        }else{
            System.out.println("谢谢参与!");
        }
    }
}

3.04switch语句
1)switch语句是基于变量或变量表达式的值来执行语句,switch语句适用于一次判断多种选择的选择结构,下面是switch语句的完整语法及流程框图:
在这里插入图片描述

> switch(switch表达式){
		case 值1:语句组1;
							break;
		case 值2: 语句组2;
							 break;
		......
		case 值N:语句组N;
							break;
		default:默认情况下执行的语句组
}

switch语句遵从规则;
①switch表达式必须能计算出一个char.byte.short.int 或者String型的值,并且必须总是用括号括住。
②值1到值N必须与switch表达式的值具有相同的数据类型,其中值1到值N必须是常量表达式,表达式中不能包含变量
③当switch表达式的值与case语句的只想匹配是,执行该case开始的语句,直到遇到break语句或是switch语句的结束
④ 默认情况(default)是可选的,当没有一个给出case与switch表达式相匹配时,用来执行该操作
⑤关键字break是可选的,break语句会立即终止switch语句
2)switch语句种常见的错误
① 忘记使用break,当一个case匹配switch表达式时,就会执行其中的语句组,直到遇到break结束或switch语句结束,这样会造成执行其他的case语句并影响程运行后的结果
②switch语句使用针对的是常量值得判断
例题1.在这里插入图片描述

import java.util.Scanner;
class day02{
    public static void main(String[] args){
        Scanner scanner=new Scanner(System.in);
        System.out.print("Please input three number:");
        //输入一元二次方程的三个系数 a b c
        double a=scanner.nextDouble();
        double b=scanner.nextDouble();
        double c=scanner.nextDouble();
        if(a==0){
            double r5=-c/b;
            if(b!=0&c!=0){
                System.out.println("The equation has one root is : "+r5);
            }else if(b==0&c==0){
                System.out.println("The equation has any roots!");
            }else if(b==0&c!=0){
                System.out.println("The equation has error! ");
            }
        }
        //判断是否有解
        if(a!=0){
           double delt=b*b-4*a*c;
           if(delt>0){
                double r1=(-b+Math.sqrt(b*b-4*a*c))/(2*a);
                double r2=(-b-Math.sqrt(b*b-4*a*c))/(2*a);
                    System.out.println("The equation has two roots "+r1+" and "+r2);
> 
> 
>  }else if(delt==0){
                double r3=(-b+Math.sqrt(b*b-4*a*c))/(2*a);
                System.out.println("The equation has one root: "+r3);
            }else{
                System.out.println("The equation has no real root!");
            } 
        }
    }
}

例题二

在这里插入图片描述

 import java.util.Scanner;
 class day03{
 	public static void main(String[] args){
				Scanner scanner=new Scanner(System.in);
				System.out.print("Enter  a nuber between 100 to 999:");
 				int num=scanner.nextInt();
 				String s="";
				s=s+num%10;
 				num/=10;
 				s=s+num%10;
 				num/=10;
 				s=s+num%10;
 				int n=Integer.parseInt(String s);
 				if(n==num){
 				System.out.println(n+" is a palinder!");
 }
 				Systtem.out.println(n+" is not a palinder!");
 }

 }

例题三
在这里插入图片描述

用户输入一个点的坐标,判断该店是否在中心为(0,0),长为10 宽为5的矩形里面
数据 ;用户输入点的坐标(x,y)
指令: 输入点的坐标大小
判断是否在矩形内
1.x绝对值小于5,并且y的绝对值小于2.5

import java.util.Scanner;
class day07{
    public static void main(String[] args){
        Scanner scanner=new Scanner(System.in);
        System.out.print("Please input a point:");
        double x=scanner.nextDouble();
        double y=scanner.nextDouble();
        if((Math.abs(x)<=5)&&(Math.abs(y)<=2.5)){
            System.out.println("("+x+","+y+" )在矩形内");
        }else{
            System.out.println("("+x+","+y+" )不在矩形内");
        }
    }

例题四

在这里插入图片描述

用户输入一个点的坐标,判断该店是否在中心为(0,0),长为10 宽为5的矩形里面
数据 ;用户输入点的坐标(x,y)
指令: 输入点的坐标大小
判断是否在矩形内
1.x绝对值小于5,并且y的绝对值小于2.5

> import java.util.Scanner;
class day07{
    public static void main(String[] args){
        Scanner scanner=new Scanner(System.in);
        System.out.print("Please input a point:");
        double x=scanner.nextDouble();
        double y=scanner.nextDouble();
        if((Math.abs(x)<=5)&&(Math.abs(y)<=2.5)){
            System.out.println("("+x+","+y+" )在矩形内");
        }else{
            System.out.println("("+x+","+y+" )不在矩形内");
        }
    }
}
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值