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 }

结果:

posted on 2017-03-18 11:48  艺海浮台  阅读(251)  评论(0编辑  收藏  举报