zoukankan      html  css  js  c++  java
  • javase学习第三天(运算符、进制转换、流程语句)

    1 三元运算符

    1.1 格式:

    (条件表达式)?表达式1:表达式2;见下图:

    1.2 运算规则:

    先对条件表达式求值,得出一个逻辑值,如果为true,则返回表达式1的值,如果为false则返回表达式2的值;

    注意:表达式1和表达式2必须同为同种类型。

    1.3 典型用法--对两个数或三个数求最大值:

     1 /*
     2 获取最大值
     3 */
     4 class Max{
     5     public static void main(String [] args){
     6         //定义变量
     7         int a=3;
     8         int b=4;
     9         //三元运算求最大值
    10         int max=a>b?a:b;
    11         System.out.println("两个数比较最大值:"+max);
    12         int c=19;
    13         int max1=max>c?max:c;
    14         System.out.println("三个数比较最大值:"+max1);
    15     }
    16     
    17 }

    1.4 三元运算符和if-else的联系与区别:

    1、 三元运算符可简化为if-else语句;

    2 、三元运算符要求必须返回一个结果;

    3 、if后的代码块可有多个语句,但三元运算符后只能有一条语句。

    1.5 求60的十六进制

     1 /*
     2 求取60的十六进制
     3 */
     4 class ShiLiu{
     5     public static void main(String [] args){
     6         //初始化变量
     7         int i=60;
     8         //求其后四位
     9         int j=i&15;//与15进行与运算,获取i的最低4位的值
    10         String str1=j>9?(char)(j-10+'a')+"":j+"";
    11         i=i>>4;
    12         String str2=i>9?(char)(i-10+'a')+"":i+"";
    13         System.out.println(str2+str1);
    14     }
    15     
    16 }

    结果:

    2 程序执行流程分类

    2.1顺序结构

    程序从上到下逐行执行,中间没有任何判断和跳转;

    2.2 分支结构

    根据条件,有选择的执行某段代码;有if-else、switch两种分支语句;

    2.2.1 在if-else中,如果省略了if或者else后面的{},那么if条件只能控制到其后的第一个分号处;

    2.2.2 else if(){}中的语句想要执行,必须满足两个条件:

       ①:已经排除上一个else if的条件,或者if的条件,这是隐含的条件;

       ②:必须满足本else if的条件才能执行,这是显示条件。 if else 使用基本原则,总是优先把范围小的条件放在前面处理。

    2.2.3 switch右一个控制表达式和多个case标签组成,和if语句不同的是,switch控制语句后面的表达式只能byte、short、int、char四种数值类型,或者是枚举和String类型(jdk1.7才开始支持),不能是boolean类型。

    执行流程:根据变量的值,选择相应的case去判断,一旦满足case条件,就执行case的相应语句。如果没有break或者已经到结尾的话,会继续执行其下的case语句。如果所有的case都不匹配的话,那么执行default中的语句。

    case 条件:其中条件只能是值,不能是取值范围! 当某些case没有break语句的时候,程序从条件表达式中的值和第一个匹配到的case语句开始执行,一直执行到遇到break或者最后。

    2.3 循环结构

    根据循环条件,重复性的执行某段代码;有while、do...while、for三种;JDK1.5提供了foreach循环,方便遍历集合、数组元素。 循环语句功能: 在某些条件满足的情况下,反复执行特定代码的功能,需要在某些特定时间把循环的条件改成false来结束循环,否则将是死循环

    循环语句的四个组成部分: 1、初始化部分(initstatement)对一些变量进行初始化;2、 循环条件部分(testexp) 条件为true执行循环,条件为false不执行循环;3、 循环体部分(bodystatement) 条件为true时执行的语句 ;4、迭代部分(alterstatement)需要更改其值的变量

    for循环中括号内的变量作用范围是{}内部,也可将其放在for循环前面。

     

    2.4 键盘输入方法案例:

     1 /*
     2 键盘输入方法
     3 */
     4 //导包
     5 import java.util.Scanner;
     6 class Scanner1{
     7     public static void main(String [] args){
     8         //创建一个Scanner类对象,System.in接收流输入
     9         Scanner s=new Scanner(System.in);
    10         System.out.println("请输入一个字符");//提示用户输入
    11         String str=s.next();//next()从键盘获取一个字符串,并赋值给str进行接收
    12         //将获取的字符串打印出来
    13         System.out.println("你输入的字符串是"+str);
    14     }
    15     
    16 }

    2.5 案例

    1、从键盘输入小明的期末成绩。当成绩为100分时,奖励一辆BMW;当成绩为(80,99]时,奖励一个台iphone5s;当成绩为[60,80]时,奖励一本参考书;其它时,什么奖励也没有。

     1 /*
     2 对成绩进行分类
     3 */
     4 //导包
     5 import java.util.Scanner;
     6 class TestIf{
     7     public static void main(String [] args){
     8         //创建一个Scanner类对象,System.in接收流输入
     9         Scanner s=new Scanner(System.in);
    10         System.out.println("请输入成绩:");//提示用户输入
    11         int scor=s.nextInt();//next()从键盘获取一个字符串,并赋值给str进行接收
    12         if(scor>100||scor<0){
    13             System.out.println("你输入的成绩不合法");
    14         }
    15         else if(scor==100){
    16             System.out.println("棒极了,奖励一辆BMW");
    17         }
    18         else if(scor>80){
    19             System.out.println("很好,奖励一台iphones");
    20         }
    21         else if(scor>=60){
    22             System.out.println("不错,奖励一本书");
    23         }else
    24         System.out.println("什么也没有");
    25     }
    26     
    27 }

     2、由键盘输入三个整数分别存入变量num1、num2、num3,对它们进行排序(使用 if-else if-else),并且从小到大输出。

     1 /*
     2 对三个数进行排序,从小到大排列
     3 */
     4 //导包
     5 import java.util.Scanner;
     6 class TestSort{
     7     public static void main(String [] args){
     8         //创建一个Scanner类对象,System.in接收流输入
     9         Scanner s=new Scanner(System.in);
    10         System.out.println("请输入第一个整数:");//提示用户输入
    11         int num1=s.nextInt();//next()从键盘获取一个字符串,并赋值给num1进行接收
    12         System.out.println("请输入第二个整数:");//输入第二个数
    13         int num2=s.nextInt();
    14         System.out.println("请输入第三个整数:");//输入第三个数
    15         int num3=s.nextInt();
    16         //对输入的三个整数进行从小到大排列
    17         System.out.println("三个整数从小到大的排列顺序为: ");
    18         if(num1>num2){
    19             if(num3>num1){
    20                 System.out.println(num2+","+num1+","+num3);
    21             }
    22             else if(num3<num2){
    23                 System.out.println(num3+","+num2+","+num1);
    24             }
    25             else{
    26                 System.out.println(num1+","+num3+","+num2);
    27             }
    28         
    29         }else{
    30             if(num3>num2){
    31                 System.out.println(num1+","+num2+","+num3);
    32             }
    33             else if(num3<num1){
    34                 System.out.println(num3+","+num1+","+num2);
    35             }
    36             else{
    37                 System.out.println(num1+","+num3+","+num2);
    38             }
    39         }
    40     }
    41     
    42 }

    3、去掉if语句的{} /* 去掉if后的{} */ //导包

     1 /*
     2 去掉if后的{}
     3 */
     4 //导包
     5 
     6 class TestIf1{
     7     public static void main(String [] args){
     8         int x=4;
     9         int y=1;
    10         if(x>2){
    11             if(y>2)
    12                 System.out.println(x+y);//if语句只能控制到这里
    13                 System.out.println("112");//这里无条件执行
    14         }else
    15             System.out.println("x is:"+x);
    16     }
    17     
    18 }

     4、从键盘输入1-12月份值,使用switch判断出属于哪个季度,然后输出该季度名称。 例如:输入 4,显示第二季度。

     1 /*
     2 对月份进行季度判断
     3 */
     4 //导包
     5 import java.util.Scanner;
     6 class CaseTesst{
     7     public static void main(String [] args){
     8         int sea=0;//定义
     9         //创建一个Scanner类对象
    10         Scanner s=new Scanner(System.in);
    11         System.out.println("请输入一个月份:");//提示用户输入
    12         int mon=s.nextInt();//next()从键盘获取一个正整数,并赋值给mon进行接收
    13         if(mon==1||mon==2||mon==3){
    14             sea=1;
    15         }else if(mon==4||mon==5||mon==6){
    16             sea=2;
    17         }else if(mon==7||mon==8||mon==9){
    18             sea=3;
    19         }else if(mon==10||mon==11||mon==12){
    20             sea=4;
    21         }else
    22             System.out.println("输入的月份不合法,请从新输入");
    23         switch(sea){
    24             case 1:
    25             System.out.println("第一个季度");
    26             break;
    27             case 2:
    28             System.out.println("第二个季度");
    29             break;
    30             case 3:
    31             System.out.println("第三个季度");
    32             break;
    33             case 4:
    34             System.out.println("第四个季度");
    35             break;
    36         }
    37     }
    38     
    39 }

    2.3  for循环

    循环格式:

    执行顺序1-->2-->3-->4,如下案例:

     1 /*
     2 循环顺序测试
     3 */
     4 //导包
     5 import java.util.Scanner;
     6 class TestFor{
     7     public static void main(String [] args){
     8         // for(int i=0;i<4;i++){
     9             // System.out.println("Hello World");
    10         
    11         // 
    12         int j=1;
    13         for(System.out.print('a');j<3;System.out.print('b'),j++){
    14             System.out.print('c');
    15         }
    16         System.out.println();
    17     }
    18     
    19 }

    结果:

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

     1 /*
     2 编写程序,从1循环到150并在每行打印一个值,另外在每个3的倍数行上打印出“foo”,在每个5的倍数行上打印“biz”,在每个7的倍数行上打印输出“baz”。
     3 */
     4 class TestDa{
     5     public static void main(String [] args){
     6         for(int i=1;i<=150;i++){
     7             System.out.print(i+" ");//不用换行,满足条件的话在后面追加
     8             if(i%3==0){//判断是否是3的倍数
     9                 System.out.print("foo"+" ");
    10             }
    11             if(i%5==0){//判断是否是5的倍数
    12                 System.out.print("biz"+" ");
    13             }
    14             if(i%7==0){//判断是否是7的倍数
    15                 System.out.print("baz");
    16             }
    17             System.out.println();//一行所有条件走完后统一换行
    18         }
    19     }
    20     
    21 }

    2.4  while循坏:

    格式

    [初始化语句]

    while( 布尔值测试表达式){

        语句或语句块;       //循环执行语句

        [更改语句;]        //控制while何时结束

    }

     1 class TestWhile{
     2     public static void main(String [] args){
     3     
     4         int count = 1;//初始化语句
     5         while(count <= 10);//没有循环语句块及break,一直空循环下去
     6         {
     7             System.out.println("正在循环打印...");
     8             count++ ;
     9         }
    10 
    11     }
    12     
    13 }

    for循环和while循环的差异

    如果想要在循环体之外访问循环控制的变量的话,需要使用while循环,因为while循环的变量定义是在while循环体之外的;反之,当不需要在循环之外访问循环控制变量的话,就使用for循环

    2.6  do-while 循环语句

    语法格式:

    [初始化语句]

    do{

        语句或语句块;

        [更改语句;]

    }while(布尔值测试表达式);              

    注意:在while表达式之后要加分号,且该循环会至少执行1次

     1 /*
     2 从键盘读入个数不确定的整数,并判断读入的正数和负数的个数,输入为0时结束程序。
     3 */
     4 import java.util.Scanner;
     5 class TestZero{
     6     public static void main(String [] args){
     7         Scanner s=new Scanner(System.in);
     8         int p_count=0;//定义正数变量,并初始化个数
     9         int n_count=0;//定义负数变量,并初始化个数
    10         while(true){
    11             System.out.println("请输入一个整数: ");//提示输入整数
    12             int num=s.nextInt();//接收屏幕输入的整数
    13             if(num>0){
    14                 p_count ++;//统计正数个数
    15             }
    16             else if(num<0){
    17                 n_count ++;//统计负数个数
    18             }else
    19                 break;
    20         }
    21         System.out.println("正数的个数为: "+p_count);
    22         System.out.println("负数的个数为: "+n_count);
    23     }
    24     
    25 }

    2.7 循环嵌套

     1 /*
     2 循环嵌套
     3 */
     4 class TestQian{
     5     public static void main(String [] args){
     6     for(int i=0;i<=10;i++){
     7         for(int j=0;j<=10-i;j++){
     8             System.out.print(" ");
     9         }
    10         for(int z=1;z<=2*i+1;z++){
    11             if(z==1||z==2*i+1){
    12                 System.out.print("#");
    13             }else if(i==10){
    14                 System.out.print("#");
    15             }
    16             else
    17                     System.out.print(" ");
    18             }
    19             System.out.println();
    20         }
    21     
    22     }
    23     
    24 }

    结果:

  • 相关阅读:
    vue-自定义指令
    vue-自定义过滤器--时间
    vue-jsonp
    vue-post
    vue-get-参数
    vue-get
    vue-百度下拉列表
    C#网页授权获取微信Openid
    C#微信环境分享页面给微信好友、朋友圈
    IIS服务器同时使用多个https证书如何操作443端口
  • 原文地址:https://www.cnblogs.com/yihaifutai/p/6572630.html
Copyright © 2011-2022 走看看