3.1Java基础语法(switch语句、循环结构)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/lkx136yuji/article/details/73252195

 一、选择结构----switch语句(补充 

Aswitch语句的几个注意事项:

  1)default在末尾中的break可以省略

  2)default可以在该switch语句中的任何位置

  3)case后面只能跟常量,不能跟变量,而且,多个case后面的值不能出现相同的

  4)swtich语句中:如果中间的中没有写break,会造成一个现象:case穿透

 

B:练习题:

1package 选择结构语句_switch;

public class SwitchTest {

public static void main(String[] args) {

//版本1

int x = 2;

int y = 3;

switch(x){//x的值放入switch

default:

y++;

              break;//1)语句break结束

case 3:

y++;

case 4:

y++;

}

System.out.println("y="+y);//结果:y=4

System.out.println("------------");

//版本2

int a = 2;

int b = 3;

switch(a){

default:

b++;//2)程序默认执行到末尾

case 3:

b++;

case 4:

b++;

}

System.out.println("b="+b);//结果:b=6

}

}

2)利用case穿透现象:

package 选择结构语句_switch;

import java.util.Scanner;

/*

 *盘录入月份的值,输出对应的季节

 *

 *3,4,5春季

 *6,7,8夏季

 *9,10,11秋季

 *12,1,2冬季

 * */

public class SwitchTest2 {

public static void main(String[] args) {

//创建键盘录入对象

Scanner sc = new Scanner(System.in);

System.out.println("请输入一个月份的值: " );

int month = sc.nextInt() ;

//使用switch语句

switch(month){//利用case穿透现象

case 3:

case 4:

case 5:

System.out.println("春季");

break;

case 6:

case 7:

case 8:

System.out.println("夏季");

break ;

case 9 :

case 10:

case 11:

System.out.println("秋季");

break ;

case 12:

case 1:

case 2:

System.out.println("冬季");

break ;

default :

System.out.println("地球没有该月份!");

break ;

}

}

}

 

C

1)switch语句模拟单项选择题:

分析:

使用键盘录入数据的时候,API发现Scanner类中没有这个方法:nextChar:接收一个字符

 我们知道ASCII码表:

  'A'------>65

   'B'------>66

  'C'------>67

   'D'------>68

   接收数据的时候使用int类型接收,然后在使用switch语句之前,将其强制转换为char字符类型

2)键盘录入字符串,然后选择满足条件的字符串,然后输出对应的结果;如果都不存在,提示没有该字符串

Scanner 使用分隔符模式将其输入分解为标记,默认情况下该分隔符模式与空白匹配。然后可以使用不同的next 方法将得到的标记转换为不同类型的值。

nextInt();

nextByte();

nextShort();

nextBoolean();

nextFloat();

nextDouble();

nextString(); //错误的正确用法应该是:

String line = sc.nextLine() ;

 

二、循环结构----for循环语句

A:

1格式:

       for(初始化语句;判断条件语句;步长语句(条件控制语句)){

  循环体语句;

 }

2执行流程:

     首先初始化语句进行赋值,然后看条件语句是否成立;

    如果是true,成立,那么就执行循环体语句;

     执行完毕之,会执行条件控制语句(++/--),该变量自增1或者自减1,然后再次

  判断条件语句是否成立如果成立,就继续执行循环体语句;

            如果条件语句不成立,那么for循环语句结束

3for循环语句的注意事项:

     a.有大括号的地方不能有分号,有分号的地方不能有大括号!

     b.for循环语句的变量只能在本大括号里面去使用;及时的从内存中消失,有利于内存空间for循环语句结束可以去执行下面的语句;

B:练习:

1)请在控制台输出数据1-10

package 循环结构语句_for循环;

public class ForDemo{

public static void main(String[] args) {

//方式1:

for(int x = 1 ; x <= 10 ; x ++){

System.out.println(x);

}

System.out.println("------------");

//方式2:

//0开始

for(int x = 0 ; x< 10 ; x ++){

System.out.println(x+1);

}

}

}

 

2)请在控制台输出数据10-1

package 循环结构语句_for循环;

public class ForDemo{

public static void main(String[] args) {

for(int x= 10 ; x>0 ; x--){

System.out.println(x);

}

}

}

 

3)求出1-10之间数据之和

package 循环结构语句_for循环;

/*

 *需求:1-10之间的和

 *

 *分析:

 *0+1 = 1;

 *  1 + 2 = 3 ;

 *  3 + 3 = 6 ;

 *  6 + 4 = 10 ;

 *  10 + 5 = 15

 *.....

 *

 *   

 *   有两个变量:(定义两个加数)

 *   第一个变量:上一个数据的和,作为加数

 *   第二个变量:该数据本身

 *   

 *   求和思想

 * */

public class ForDemo{

public static void main(String[] args) {

//定义最终结果的变量

int sum = 0 ;

//使用for循环

for(int x = 1 ; x <=10 ; x ++){

//sum  = sum + x ;

sum += x ;

}

//最终输出这个结果

System.out.println("1-10之和是:" + sum);

}

}

 

4)求出1-100之间偶数和

package 循环结构语句_for循环;

public class ForDemo{

public static void main(String[] args) {

//1-100之间的偶数和

//定义求和变量sum2

int sum= 0 ;

for(int x = 1; x <= 100; x ++){

//做判断

if(x%2==0){

//偶数

sum += x ;

}

}

System.out.println("1-100之间的偶数和是:" +sum2);

//方式2

int sum3 = 0;

for(int x = 0 ; x <=100 ; x +=2){

sum3 += x ;

}

System.out.println("1-100之间的偶数和是:" +sum3);

}

}

 

5)求出1-100之间奇数和(4)方法相同)

 

6)5的阶乘

package 循环结构语句_for循环;

/*

 *阶乘的概念:

 *n! = n*(n-1)!

 *n! = n*(n-1)*(n-2).....3*2*1;

 *

 * */

public class ForDemo{

public static void main(String[] args) {

//定义最终结果的变量

int jc = 1 ;

for(int x = 1 ;x <= 5; x ++){

//变量x其实可以从2开始

for(int x = 2 ; x <=5 ; x ++){

//*=

jc *= x ;

}

System.out.println("5的阶乘是:" +jc);

}

}

 

7)在控制台输出所有的”水仙花数”

package 循环结构语句_for循环;

//在控制台输出所有的”水仙花数”

/*

 *分析:

 *什么是水仙化数(三位数):

 *

 *这个三位数的值本身=它的个位的立方和十位的立方还有百位的立方和

 *举例:153 = 1*1*1+5*5*5+3*3*3

 *

 *1)水仙花数:已经告诉了一个范围

 *2)使用for循环:在语句体如何获取个位的数据,十位的数据,百位的数据

 *变量x

 *int ge = x %10 ;

 *int shi = x/10%10 ;

 *int bai = x/10/10 %10;

 *

 *3)if语句判断

 *如果x == ge^3+shi^3+bai^3

 *4)输出结果就可以

 *

 * */

public class ForDemo{

public static void main(String[] args){

//1)使用for循环,水仙花已经告诉范围

for(int x = 100 ; x <1000 ; x ++){

//获取每一位上的数据

          //定义三个变量获取值

int ge = x %10 ;

int shi = x /10 % 10 ;

int bai = x /10/10 %10 ;

//做一个判断

if(x==(ge*ge*ge+shi*shi*shi+bai*bai*bai)){

System.out.println("水仙花是:" + x);

}

}

}

}

 

8)统计”水仙花数”共有多少个

package 循环结构语句_for循环;

/*

 *统计"水仙花数"有多少个

 *指定的是三位数组成的:并且每一个位上的数据立方和等于该数据本身

 *分析:

 *1)定义统计变量:count ,初始化值为0

 *2)知道范围,采用for循环实现

 *3)获取每个位上的数据

 *4)只要满足每一个位上的数据立方和等于该数据本身:

 * */

public class ForTest{

public static void main(String[] args){

//1)定义统计变量:

int count = 0 ;

//2)使用for循环

for(int x = 100 ;x < 1000; x ++){

//获取每个位上的数据然后并且进行判断

int ge = x %10 ;

int shi = x /10 % 10;

int bai = x /10/10 % 10 ;

if(x==(ge*ge*ge+shi*shi*shi+bai*bai*bai)){

System.out.println(x);

//满足条件,统计一次

count ++ ;

}

}

System.out.println("水仙花数共有:"+count+"");

}

}

9)请在控制台输出满足如下条件的五位数

个位等于万位

十位等于千位

个位+十位+千位+万位=百位

package 循环结构语句_for循环;

/*

分析:1)5位数告诉范围,使用for循环

2)分解五位数中的每一个位上的数据

分别给每一个位上的数据进行取整然后取模

3)按照上述的三个条件进行判断

4)输出结果

 

*/

public class ForTest {

public static void main(String[] args){

//1)5位数告诉范围,使用for循环

for(int x = 10000;x < 100000; x++){

//2)分解五位数中的每一个位上的数据

//分别给每一个位上的数据进行取整然后取模

int ge = x %10 ;

int shi = x /10 %10 ;

int bai = x /10/10 %10 ;

int qian = x /10/10/10 %10 ;

int wan = x /10/10/10/10 % 10 ;

//3)按照上述的三个条件进行判断:

/*

 *  个位等于万位

十位等于千位

个位+十位+千位+万位=百位

 * */

if((ge==wan) && (shi==qian) && (ge+shi+qian+wan==bai)){

System.out.println("该数据是:" +x);

}

}

}

}

10)请统计1-1000之间同时满足如下条件的数据有多少个:

3整除余2

5整除余3

7整除余2

package 循环结构语句_for循环;

/*

分析:

1)定义统计变量

2)1-1000之间属于一个范围:for循环

3)满足条件

判断

x%3==2

x%5==3

x%7==2

4)统计输出结果

*/

public class ForTest3 {

public static void main(String[] args){

//定义统计变量

int count = 0 ;

for(int x = 1 ; x <=1000; x ++){

/*

 *满足如下条件

 *3整除余2

5整除余3

7整除余2

 * */

if((x%3==2) &&(x%5==3) && (x%7==2)){

//统计

count ++ ;

System.out.println(x);

}

}

System.out.println("满足这样条件的数据共有:" + count +"");

}

}


三、循环结构----while语句

A

1while语句的格式:

基本的格式:

 while(条件判断语句){

  循环体语句;

  }

  

    扩展的格式:

 初始化语句;

 while(条件判断语句){

  循环体语句;

控制条件语句;

       }

 2 执行流程:

  初始化语句进行赋值,进入while语句:判断条件是否成立;

     如果成立,执行循环体语句,控制条件语句进行自增自减,然后回来再次

         判断条件是否成立,成立继续执行循环体语句,一次类推.

         如果不成立,while语句结束

for循环和while循环的区别

 1)使用区别

   如果循环结束,还想使用控制的那个变量,那么必须使用while循环;一般情况下,使用for循环,

   从内存的角度来说,使用for循环好处大于while循环

 2)应用场景:

 如果知道一个范围:for循环

 如果不明确循环的次数,使用while循环

 举例:吃葡萄

B:练习:

package 循环语句_while语句;

/*

 *我国最高山峰是珠穆朗玛峰:8848m,我现在有一张足够大的纸张,厚度为:0.01m

 *请问,我折叠多少次,就可以保证厚度不低于珠穆朗玛峰的高度?

 *分析:

 *1)定义统计变量

 *2)我国最高山峰是珠穆朗玛峰:8848m,最终厚度

 *3)我现在有一张足够大的纸张,厚度为:0.01m--->初始厚度

 *4)我折叠多少次,就可以保证厚度不低于珠穆朗玛峰的高度?

 *折叠一次,是以前的2

 *5)初始化厚度小于最终厚度:

 *统计变量++

 

 * */

public class WhileTest {

public static void main(String[] args){

//1)定义统计变量

int count = 0 ;

/*

 * 2)我国最高山峰是珠穆朗玛峰:8848m,最终厚度,-- >884800

 *3)我现在有一张足够大的纸张,厚度为:0.01m--->初始厚度-->1

 *

 *定义初始厚度和最终厚度

 * */

int start = 1 ;

int  end = 884800;

//不明确次数的情况使用while

while(start<end){

//初始化厚度小于最终厚度:

 //统计变量++

count ++ ;

//折叠一次,是以前的2

start *=2 ;

System.out.println(""+count+"次的厚度为:"+start);

}

System.out.println("折叠" +count+"");

}

}

 

四、循环结构----do-while语句

A

1)格式:do-while循环结构语句的格式:

   基本的格式:

   do{

循环体语句;

 }while(条件判断语句) ;

  

   扩展格式:

  初始化语句;

 do{

  循环体语句;

 控制条件语句;

  }while(条件判断语句) ;

do-while循环,while循环,for循环的区别

1do-while循环语句,循环体至少执行一次;for循环,while循环,先判断条件语句是否成立,成立才执行循环体语句;

2for循环和while:一般for循环,其次是while循环,最后使用do-while循环

B死循环的两种格式:

 格式一:

 while(true){

 语句;

 }

 格式:

  for(;;){

语句;

}

没有更多推荐了,返回首页