Java语法基础三

如何接收键盘录入数据

java.util.Scanner类常用于控制台的输入,当需要使用控制台输入时即可调用这个类。

使用方法

        1、首先需要构造一个Scanner类的对象,并且与标准输入流System.in关联Scanner sc = new Scanner(System.in);

        2、调用Scanner类对象sc的方法从输入流中获取你需要的输入

说明:

当创建了一个Scanner类对象之后,控制台会一直等待输入,直到敲回车键结束,把所输入的内容传给对象sc,若要获取需要的内容,调用sc的方法即可
Scanner sc=new Scanner(System.in); 
System.out.println("请输入园的半径值:"); //用于提示用户录入数据 
int r=sc.nextInt(); //要求用户输入数据,否则阻塞等待用户输入 
System.out.println("接受到的数据为"+r);
每次可以只输入一个数字,回车确认,例如123,只能被一个nextInt读取。
也可以输入一组数字,例如123 456 789,每个数字之间用空格(一个或多个空格)隔开,可被多个nextInt()读取,空格及回车不会被读取。(注:输入数字中不能夹杂除数字、空格、回车之外的其他字符,否则会报错)

如何在控制台输出数据

System.out.println(数据); 

System.out.println("请输入圆的半径值:"); 
int kk=100; 
double res=3.14*kk*kk; 
System.out.println("圆的半径值为"+kk+",对应面积为"+res);

表达式

表达式就是运算符、操作数以及方法调用的序列,用来说明某个计算过程并返回计算结果。按照运算符功能来分,基本的运算符分为算术运算符、关系运算符、位运算符、条件运算符等

        1、算术运算符 +-*/%++--

        2、关系运算符 ><>=<===!=

        3、逻辑运算符 && || !。注意:逻辑计算支持短路操作

        4、位运算符 &|^~<< >>>>>。注意:为运算符不支持短路操作

        5、赋值运算符 =+==*=/=

        6、三目条件运算符(?:)规则是完全一致的,使用的形式是: x ? yz;

算术运算符+-*/%++--

+-*/

整除:参与运算的双方都是整数 10/3=3而不是3.33333

如果是10./3=3.333...这里由于10.是浮点数,则3会自动转换为大类型并参与计算,所以最终是10.0/3.0的计算结果

计算次序为先乘除后加减,如果优先级一致,则自动从左向右进行计算 10+2*5=20

/除法分母不能为0,否则出错

% 求余(取模) 10%3=1实际就是10除以3求余数
double k=10.12;
System.out.println(k%3);
输出:1.1199999999999992 应该返回值为1.12,由于浮点数不能精确存放,所以返回值是一个类似值
double d1=-10.12;
double res=d1%3;
System.out.println(res);
输出值为-1.1199999999999992 求余计算中符号位不参与计算
++--是单目运算符
i++等价于i=i+1,i--等价于i=i-1
++为例写法有2个:i++或者++i
i++是先获取i的值,然后再对i1
        int age=100;
        System.out.println(age++);输出为100
        System.out.println(age); 输出为101,因为上面进行加1
++i是先对i1,然后再获取i的值
        int age=100;
        System.out.println(++age);输出101,先加1然后获取值
        System.out.println(age); 输出101

例题

public class Oper11 { 
    public static void main(String[] args) { 
        int k = 0; 
        int res = k++ + k++ + k; 
        System.out.println(res); //3 

        int m = 0; 
        res = ++m + m++ + m; 
        System.out.println(res); //4 
    } 
}

关系运算符>、<、>=、<=、==、!=

用于判断两个数据之间的大小关系,计算结果为boolean,如果成立返回为true,否则为false

double d1=10; 
System.out.println(d1>3); //返回true 

//==和=的区别: 
k=100;   //这是赋值运算符,意思是将=右边的计算结果储存在=左边的变量中 
k==100;  //这是比较计算符,意思是判断k是否值为100;如果是则返回true,否则false 

//!=意思是判断是否不等于,表示如果相等时返回false,否则返回true 
k!=100;  //不等于判定,如果k值为100则返回false,如果k值不是100则返回true

//由于浮点数无法精确存放,所以判断k==1.0这个写法是错误的 
//正确写法: a-b的绝对值小于1e-6 

//Java提供了一个工具类Math,其中包含一个abs()的方法实现求绝对值 

Math.abs(d1-1)<1e-6 //判断浮点类型的变量d1的值是否为1

浮点数的比较

double res = 0; 
for(int i=0;i<10;i++) 
    res=res+0.1; 
if(Math.abs(res-1)<1e-6) //|res-1|判断是否小于10的-6次方 
    System.out.println("计算结果为1"); 
else
    System.out.println("计算结果不为1");

练习题:

        1、键盘录入升数,输出对应的加仑数

//1加仑(美)=3.785 412升 
Scanner sc=new Scanner(System.in); 
System.out.print("请输入升数:"); 
double d=sc.nextDouble(); 
double g=d/3.785412; 
g=g*10000+0.5; 
g=(int)g/10000.;  //如果写成(int)g/10000结果一定是没有小数,因为参与运算的双方是整数,所以除法是 
                  // 整除运算 
System.out.println(d+"升等于"+g+"加仑");

        2、键盘录入华氏温度,输出对应的摄氏温度

//C = 5×(F- 32)/9 

Scanner sc = new Scanner(System.in); 
System.out.println("请输入华氏温度值:"); 
double f = sc.nextDouble(); 

// C = 5×(F- 32)/9 
double cc = 5 * (f - 32) / 9; 
//额外要求:只输出整数 
System.out.println("华氏" + (int) f + "等于摄氏" + (int) cc);

逻辑运算符&&、||、!

注意:逻辑计算支持短路操作

表达多个条件之间的关系。例如年龄大于等于18并且年龄小于65

&&:与运算,含义是两个条件必须同时成立,可以翻译为并且

//年龄大于等于18并且年龄小于65 

age>=18 && age<65 

//算法规则:同真则真,其余为假

||:或运算,含义是两个条件中成立一个即可,可以翻译为或者

//年龄小于18岁或者年龄不小于65 

age<18 || age>=65 

//算法规则:同假则假,否则为真

!:非运算,含义是不是,用于对某个条件进行否定

//年龄不小于18 

age >=18   //写法1 

//!(age<18) //写法2

//算法规则:非真则假,非假则真

短路运算的一些小测试

int age=100; 
char cc='A'; 
if(cc>='B' || age++<200){ 
    System.out.println("ZZZZZ"); 
}
System.out.println(age);//?输出101 



int age=100; 
char cc='A'; 
if(cc>='B' && age++<200){ 
    System.out.println("ZZZZZ"); 
}
System.out.println(age);//?输出100,因为短路的原因,导致age++并没有得到执行 



int age=200; 
char cc='A'; 
if(cc>='B' || age++<=200){ 
    System.out.println("ZZZZZ"); 
    System.out.println(age);//?输出201 
}

赋值运算符=,+=,-=,*=,/=,%=

int  k=100;  含义是将100赋值存储在k相应的存储单元中

k=k+3;  可以简写成k+=3;   -=  *=  /=  类似

short k=3; 
k=k+3; //出现了一个语法错误,因为k+3这里的3系统识别为int类型,所以计算时所有数据自动转换为int
       //类型,必然计算结果也是int类型,将int类型的数据赋值给short类型变量----错误 
System.out.println(k);
short k=3; 
k+=3; //没有语法错误,因为+=这种符号中包含了自动类型转换

三目运算符

三目条件运算符   (?  :   )  规则是完全一致的,使用的形式是:x?y:z;

需求:要求输入两个整数,输出最大的整数

使用if判断的实现方式:

public class Test8 { 
    public static void main(String[] args) { 
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入第一个整数:"); 
        int num1 = sc.nextInt(); 
        System.out.println("请输入第二个整数:"); 
        int num2 = sc.nextInt(); 
        int max = num1; 
        if (max < num2) max = num2; 
            System.out.println("两个整数("+num1+","+num2+")中最大的值为:"+max); 
        sc.close(); 
    } 
}

使用三目运算符实现

Scanner sc = new Scanner(System.in); 
System.out.println("请输入第一个整数:"); 
int num1 = sc.nextInt(); 
System.out.println("请输入第二个整数:"); 
int num2 = sc.nextInt(); 
            /*
             * if(num1>num2) max=num1; 
             * else max=num2; 
             */ 
int max = num1 > num2 ? num1 : num2; 
System.out.println("两个整数("+num1+","+num2+")中最大的值为:"+max); 
sc.close();

        1、要求表达式1必须返回值为boolean类型

        2、要求表达式2和表达式3的返回值类型一致

                Object max = num1 > num2 ? num1 : "num2";

例题

int k=100; 
int m=99; 
int res=k>100?m++:++m; 
System.out.println(res); //100 k>100不成立,则直接执行++m,而和表达式2:m++无关,不会执行System.out.println(m); //100

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值