Day04 - - Java基本语法(含习题)

一、从键盘输入(Scanner类):

 

如何从键盘获取不同类型的变量:需要使用Scanner

具体实现步骤:

    1.导包:import java.util.Scanner;

    2.Scanner的实例化:Scanner in=new Scanner(System.in);

    3.调用Scanner类的相关方法(next/nextXxx),来获取指定类型的变量。

 

注意:

    需要根据相应的方法,来输入指定类型的值,如果输入的数据类型与

要求的数据类型不匹配时,会报InputNisMatchException异常,导致程序终止。

 

 

package cn.edu.bzu;

import java.util.Scanner;

//如何从键盘获取不同类型的变量:需要使用Scanner类

//

//具体实现步骤:

//  1.导包:import java.util.Scanner;

//  2.Scanner的实例化:Scanner in=new Scanner(System.in);

//  3.调用Scanner类的相关方法(next/nextXxx),来获取指定类型的变量。

//

//注意:

//  需要根据相应的方法,来输入指定类型的值,如果输入的数据类型与

//要求的数据类型不匹配时,会报InputNisMatchException异常,导致程序终止。

public class Test00 {

    public static void main(String[] args) {

        Scanner in=new Scanner(System.in);

        //获取int型的值

        System.out.println("请输入int型的数值:");

        int num=in.nextInt();

        System.out.println("输出:"+num);

        //获取double型的值

        System.out.println("请输入double型的数值:");

        double num1=in.nextDouble();//输入2

        System.out.println("输出:"+num1);//2.0

    }

}

 

二、if–else:

 

if-else试题1:

 

 

if-else试题2:

package cn.edu.bzu;



import java.util.Scanner;

   

public class Test00 {

    public static void main(String[] args) {

        Scanner scan=new Scanner(System.in);

       

        System.out.println("请输入岳小鹏期末考试成绩(0--100):");

        int score=scan.nextInt();

       

        if(score==100)

            System.out.println("奖励一辆BMW.");

        else if(score>80)

            System.out.println("奖励一台iphone xs max.");

        else if(score>=60)

            System.out.println("奖励一个ipad.");

        else

            System.out.println("成绩未达标,无奖励.");

       

    }

}

注意:执行完if或者else if中的一个后直接就退出,和不带break的switch语句不同(不带break的switch语句会依次向下执行)。

 

运行结果:

请输入岳小鹏期末考试成绩(0--100)

88

奖励一台iphone xs max.

 

 

if-else试题3:(将上面的>=60的和>80的两个互换位置)

package cn.edu.bzu;



import java.util.Scanner;

   

public class Test00 {

    public static void main(String[] args) {

        Scanner scan=new Scanner(System.in);

       

        System.out.println("请输入岳小鹏期末考试成绩(0--100):");

        int score=scan.nextInt();

       

        if(score==100)

            System.out.println("奖励一辆BMW.");

       

        else if(score>=60)

            System.out.println("奖励一个ipad.");

        else if(score>80)

            System.out.println("奖励一台iphone xs max.");

       

        else

            System.out.println("成绩未达标,无奖励.");

        //如果输入88: if-else试题1中会执行“>80“后的语句;而if-else试题2中会执行>=60后的语句。

    }

}

 

运行结果:

请输入岳小鹏期末考试成绩(0--100)

88

奖励一个ipad.

 

 

说明:

1.else结构是可选的。

2.针对于条件表达式:

       >如果多个条件之间是互斥关系(或没有交集的关系),哪个判断和执行语句声明在上面还是下面,无所谓。

       >如果多个条件表达式之间有交集的关系,需要根据实际情况,考虑清楚应该将哪个结构声明在上面。

       >如果多个条件表达式之间有包含的关系,通常情况下,需要将范围小的声明在范围大的上面。否则,范围小的就没机会执行。(如if-else试题2中将>=60的放在>80的上面就不可取)。

 

 

代码:

package cn.edu.bzu;


import java.util.Scanner;


public class Test00 {

    public static void main(String[] args) {

        Scanner scan=new Scanner(System.in);

       

        System.out.println("请输入第一个整数:");

        int num1=scan.nextInt();

        System.out.println("请输入第二个整数:");

        int num2=scan.nextInt();

        System.out.println("请输入第三个整数:");

        int num3=scan.nextInt();

       

        if(num1>num2) {

            if(num3>num1)  //新出现的大于之前两者比较最大的

                System.out.println(num2+" "+num1+" num3");

            else if(num3<num2) //新出现的小于之前两者比较最小的

                System.out.println(num3+" "+num2+" "+num1);

            else    //新出现的介于之前两者中间

                System.out.println(num2+" "+num3+" "+num1);

        }else {

            if(num3>num2)  //新出现的大于之前两者比较最大的

                System.out.println(num1+" "+num2+" "+num3);

            else if(num3<num1) //新出现的小于之前两者比较最小的

                System.out.println(num3+" "+num1+" "+num2);

            else    //新出现的介于之前两者中间

                System.out.println(num1+" "+num3+" "+num2);

        }

    }

}
package cn.edu.bzu;

import java.util.Scanner;

public class Test00 {

    public static void main(String[] args) {


        int x=4;

        int y=1;

        if(x>2)

            if(y>2)

                System.out.println(x+y);

        else    //else与最近的且未配对的if配对

            System.out.println("x is "+x);

    }

}

 

 

 

 

T3:

package cn.edu.bzu;

import java.util.Scanner;

public class Test00 {

    public static void main(String[] args) {

       

        int dogAge=6;

        if(dogAge>=0 && dogAge<=2)

            System.out.println("相当于人的年龄:"+dogAge*10.5);

        else if(dogAge>2)

            System.out.println("相当于人的年龄:"+(2*10.5+(dogAge-2)*4));

        else

            System.out.println("狗狗还没有出生呢!");
 

    }

}

 

 

package cn.edu.bzu;



import java.util.Scanner;



public class Test00 {

    public static void main(String[] args) {

        //如何获取一个随机数:10 - 99

        double value=Math.random()*90+10; //[0.0,1.0) --> [10.0,100.0) --> [10,99)

        System.out.println(value);

       

        //公式:[a,b] :(int)(Math.random()*(b-a+1)) +a;

    }

}

 

 

 

代码一:


package cn.edu.bzu;



import java.util.Scanner;



public class Test00 {

    public static void main(String[] args) {

       

        Scanner scan=new Scanner(System.in);

       

        System.out.println("请输入您的身高(cm):");

        int height=scan.nextInt();

        System.out.println("请输入您的财富(千万):" );

        double wealth=scan.nextDouble();

        System.out.println("请确认自己是否帅(true/false):");

        boolean isHandsome=scan.nextBoolean();

       

        if(height >=180 && wealth>=1 && isHandsome)

            System.out.println("我一定要嫁给他!");

        else if(height>=180 || wealth >=1 || isHandsome)

            System.out.println("可以考虑嫁给!");

        else

            System.out.println("不嫁");

       

    }

}

 

代码二:如果 “帅不帅” 用String类型的话,在判断时需要使用 “String类型.equals(“是”)“方法。

 

 

三、switch - case:

 

说明:

    (1)、根据switch表达式的值,依次匹配各个case中的常量。一旦匹配成功,则进入相应case结构中,调用其执行语句。

        当调用完执行语句以后,则仍然继续往下执行其他case结构中的执行语句,直到遇到break关键字或此switch-case结构

        末尾结束为止。

    (2)break可以使用在循环语句和switch语句中,表示一旦执行到此关键字,就跳出switch-case结构

    (3)switch-case中的表达式只能是如下6种数据类型之一 :

        byteshortcharint、枚举类型、String

    (4)case之后只能声明常量。不能声明范围。

    (5)break关键字是可选的。

    (6)default相当于if-else结构中的else

        default结构是可选的,而且位置是灵活的。(如果default放在最开头,会先执行后面的case,如果case没有满足条件能执行的,再回过来执行default,知道遇到break才会再退出)

package cn.edu.bzu;


import java.util.Scanner;


//说明:

//  (1)、根据switch表达式的值,依次匹配各个case中的常量。一旦匹配成功,则进入相应case结构中,调用其执行语句。

//      当调用完执行语句以后,则仍然继续往下执行其他case结构中的执行语句,直到遇到break关键字或此switch-case结构

//      末尾结束为止。

//  (2)、break可以使用在循环语句和switch语句中,表示一旦执行到此关键字,就跳出switch-case结构

//  (3)、switch-case中的表达式只能是如下6种数据类型之一 :

//      byte、short、char、int、枚举类型、String

//  (4)、case之后只能声明常量。不能声明范围。

//  (5)、break关键字是可选的。

//  (6)、default相当于if-else结构中的else,

//      default结构是可选的,而且位置是灵活的。(如果default放在最开头,会先执行后面的case,如果case没有满足条件能执行的,再回过来执行default,知道遇到break才会再退出)


public class Test01 {

    public static void main(String[] args) {

           
            Scanner s=new Scanner(System.in);

            System.out.println("请输入您心中的数字:");

            int num=s.nextInt();


            //int num=2;

            switch(num) {

                case 0:

                   System.out.println("zero");

                case 1:

                   System.out.println("one");

                case 2:

                   System.out.println("two");

                case 3:

                   System.out.println("three");
     

                default:

                   System.out.println("over");

            }
    

//  结果:因为没加break;

//  two

//  three

//  over    

    }

}

 

 

例题:

 

 

 

package cn.edu.bzu;


import java.util.Scanner;


public class Test01 {

    public static void main(String[] args) {

           
            Scanner scan=new Scanner(System.in);

            System.out.println("请输入year:");

            int year=scan.nextInt();

            System.out.println("请输入month:");

            int month=scan.nextInt();

            System.out.println("请输入day:");

            int day=scan.nextInt();

           
            //d定义一个变量来保存总天数

            int sumDay=0;

            switch(month) {

                case 12:

                   sumDay += 30;

                case 11:

                   sumDay += 31;

                case 10:

                   sumDay += 30;

                case 9:

                   sumDay += 31;

                case 8:

                   sumDay += 31;

                case 7:

                   sumDay += 30;

                case 6:

                   sumDay += 31;

                case 5:

                   sumDay += 30;

                case 4:

                   sumDay += 31;

                case 3:

                   if(month %4==0 && month%100==0 || month%400==0)

                       sumDay += 29;

                   else

                       sumDay += 28;

                case 2:

                   sumDay += 31;

                case 1:

                   sumDay+=day;
            }

            System.out.println("该日期是"+year+"年的第"+sumDay+"天");
    }

}

 

 

四、循环结构:

 

 

 

注意:循环条件必须是boolean类型。

 

package cn.edu.bzu;

import java.util.Scanner;

public class Test01 {

    public static void main(String[] args) {

      
        int i;

        for(i=1;i<=150;i++) {

            System.out.print(i);

            if(i%3==0)

                System.out.print(" foo");

            if(i%5==0)

                System.out.print(" biz");

            if(i%7==0)

                System.out.print(" baz");

            System.out.println();

        }      

    }

}

 

 

五、习题:

 

1.switch后面使用的表达式可以是哪些数据类型的。

byte 、 short 、char 、int 、枚举类型变量、String类型。

 

2. 使用switch语句改写下列if语句:

       int a = 3;

       int x = 100;

       if(a==1)

              x+=5;

       else if(a==2)

              x+=10;

       else if(a==3)

              x+=16;

       else            

              x+=34;

改:

int a = 3;

int x = 100;

switch(a){

case 1:

       x+=5;

       break;

case 2:

       x+=10;

       break;

case 3:

       x+=16;

       break;

default:

       x+=34;

       //break;

}

 

3. 谈谈你对三元运算符、if-else和switch-case结构使用场景的理解

int c;

if(a != b){

       c = a;

}else{

       c = b;

}

 

int c = (a != b)? a : b;

 

int c = a;

 

4. 如何从控制台获取String和int型的变量,并输出?使用代码实现

(1).import java.util.Scanner;

 

(2). Scanner scan = new Scanner(System.in);

 

(3). String info = scan.next();

   int id = scan.nextInt();

 

5. 使用for循环遍历100以内的奇数,并计算所有的奇数的和并输出。

int sum = 0;    //如果不赋值为0,则以后会编译不通过(sum+=i无法执行,因为不知道sum初始是多少)

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

       if(i % 2 != 0){

              Sysout(i);

              sum += i;

       }

}

syout(sum);

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值