1.3 运算符与表达式
算数运算符:+,-,*,/,%,++,--;
除法要注意Java中有两种除法:一般除法和整除,如果除数和被除数都为整形,那么执行的整除,除此之外执行一般除法;
4/3=1
4.0/3=1.3333333
求余运算的用途:
1)判断奇偶数;
2)数据周期性变化,比方说时钟;
3)判断因子;
4)取整数的某些位(比如个位);
++:将一个数自增1;
a++等价于a=a+1;
自增运算的存在价值:简洁
b=a++等价于b=a;a++;
b=++a等价于a++;b=a;
++写在前面就先加,写在后面就后加。
案例3:算术运算符
public class Test {
public static void main(String[] args) {
// TODO Auto-generated method stub
int a=(3+4*5)/6;
int b=23%3;
System.out.println(a);
System.out.println(b);
int c=++b;
System.out.println(b);
System.out.println(c);
}
}
结果:
关系运算符:
> >= < <= == !=
赋值运算符:
y=x+3;
赋值运算符的左边一定是变量。为什么?
所谓赋值,指的是将一个数据存储到某个内存单元中。
复合赋值运算符:
Y+=3;等价于y=y+3;
特别注意:
==和=的区别;
比如要表达:“如果a等于b,则将a的值加1”
错误写法:
If(a=b){
a++;
}
这种错误需要特别注意,初学者甚至老程序员都会经常犯错。正确的表达是:
If(a==b){
a++;
}
表达“如果a等于3则将a加1”,通常的写法是:
if(a==3){
a++;
}
推荐写法:
If(3==a){
a++;
}
逻辑运算符:
&& || !
与 或 非
a>b>c的数学中的含义和计算机语言中的含义不一样。
计算机中表示(a>b)>c;
所以正确的表达a>b>c应是:a>b && b>c;
1.4 基本输入输出
输入:
Scanner input=new Scanner(System.in);
input.next();
Input.nextInt();
......
输出:
System.out.print();
System.out.println();
System.out.printf();
案例:简单加法器;
public class Test {
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.print("请输入两个整数");
Scanner input=new Scanner(System.in);
int a=input.nextInt();
int b=input.nextInt();
int sum=a+b;
System.out.printf("%d+%d=%d",a,b,sum);
}
}
结果:
心得体会:
输出除了print,println,还可以使用更加强大的printf;
Printf支持使用格式字符输出数据,常用的格式字符有
%d=整数
%f=浮点数
%s=字符串
格式不能混用,否则可能会出错。
浮点型数据系统默认保留小数点后六位;要保留三位时,只需在%f中间加上.和要保留的位数;如%.3f意为保留小数点后3位;还有.之前加数字,即表示数字的总位数,如%10.3f表示为数据不少于10位,小数点后有3位,前面7位数字若只有3位有数字,则前面用空格显示,它的结果为 123.456;若想用0显示出来则需要在10前面加上0,如%010.3f,它的结果为000123.456.
1.5 程序设计方法
学习程序设计的方法,可以参考练字的方法,描红→临摹→独立书写。
编写程序的方法——三步法:
(1) 先形成解决问题的思路(换位思考);
(2) 用自然语言或流程表达思路(清晰准确);
(3) 将自然语言描述的思路翻译成计算机语言。
(1)(2)步和计算机语言没有任何关系,最重要的是(1);所以学习程序设计最重要的是学习和提高分析问题,解决问题的能力,而不是学习语法。
案例:计算一个三位数字的各位数字之和,如645就等于15;
(1) 提示用户输入一个数字;
(2) 接收用户的输入;
(3) 分别得到百位,十位和个位;
百位:整除100得到百位;
十位:先除以10,再对10求余得到十位;
个位:对10求余得到个位;
(4) 三位相加求和;
(5) 输出结果。
public class Test {
public static void main(String[] args) {
/*(1) 提示用户输入一个数字;
(2) 接收用户的输入;
(3) 分别得到百位,十位和个位;
(4) 三位相加求和;
(5) 输出结果。*/
Scanner input=new Scanner(System.in);
System.out.println("请输入一个三位数字");
int num=input.nextInt();
int bai=num/100;
int shi=(num/10)%10;
int ge=num%10;
int sum=bai+shi+ge;
System.out.printf("%d的三位数之和是%d",num,sum);
}
}
结果:
心得体会:
每个步骤与逻辑之间应适当的加一些空行或空格以区分开,以增强代码的可读性;
编写程序前一定要有思路,而且思路必须正确和清晰;
案例:重组三位数得到最大值
思路: 1.提示用户输入一个三位数字;
2.分别得出数字的百位,十位,个位;
3.比较三个数字的大小,并重组排序(大的在前,小的最后,剩下的中间);最大的乘100,中间的乘10,最小的乘1;
4.输出结果
public class Tese {
public static void main(String[] args) {
/*1.提示用户输入一个三位数字;
*2。分别得出数字的百位,十位,个位;
*3.比较三个数字的大小,并排序(大的在前,小的最后,剩下的中间);
*4.输出结果.*/
Scanner input=new Scanner(System.in);
System.out.println("请输入一个三位数字");
int num=input.nextInt();
//分别计算百位,十位,个位;
int bai=num/100;
int shi=(num%100)/10;
int ge=num%10;
//求出最大值,最小值和中间值;
int max=Math.max(Math.max(bai, shi), ge);
int min=Math.min(Math.min(bai, shi), ge);
int middle=(bai+shi+ge)-(max+min);
int result=max*100+middle*10+min; //对三个值进行重组得到最大值;
System.out.printf("重组%d得到最大值%d",num,result); //输出结果
}
}
心得体会:
计算机的思维方式和人有很大不同,作为程序员就是要习惯站在计算机的角度去思考问题;
一旦思路清晰了,代码就很容易编写;
为了增强代码的可读性,要合理注释。如果对代码块进行注释,注释写在代码块上面;如果对某一行注释,注释写在行尾。