计算机的智能是建筑在规则的基础上的,在遇到情况的时候,根据事先制定的规则做出判断,是计算机最基本的能力。
能做判断的基础,是能对数据做比较,比较就是关于两个数据是否相等、谁大谁小的结论,这需要用到关系运算:对两个数据之间的关系的计算。
Java提供了六个关系运算符:
== 相等
!= 不相等
> 大于
>= 大于或等于
< 小于
<= 小于或等于
注意其中有两个字符的运算符:==、>=和<=的两个字符必须紧紧连在一起,中间不能插入空格。
关系运算的结果是一个逻辑值,逻辑值只有两种可能的值:true(真,表示成立)或false(假,表示不成立)。当两个值的关系符合关系运算符的预期时,关系运算的结果为true,否则为false。
2.1 作比较
- 自动售票机
import java.util.Scanner;
public class AB {
private static Scanner in;
public static void main(String[] args) {
//初始化
in = new Scanner(System.in);
// 读入投币金额
System.out.println("请投币");
int amount = in.nextInt();
//计算并找零
if(amount<10)
{
System.out.println("请继续投币");
}
else
{
//打印车票
System.out.println("*************");
System.out.println("*java城际特快*");
System.out.println("**无指定座位**");
System.out.println("***票价 10元**");
System.out.println("*************");
System.out.println("找零"+(amount-10));
}
}
}
2.3 运算关系
Double a = 1.0
Double b = 0.1+0.1+0.1+0.1+0.1+0.1+0.1+0.1+0.1+0.1
System.out.println(a==b);
false
- 判断两个浮点数是否相等
Math.abs(a-b)<1e-6
tips:
1e-6 可续计数法,表示 1*10的负6次方;
math.abs(),取绝对值。
根据比较的结果,决定做、还是不做某些动作,就要用到if语句。
一个基本的if语句由一个关键字if开头,跟上在括号里的一个表示条件的逻辑表达式,然后是一对大括号“{}”之间的若干条语句。如果表示条件的逻辑表达式的结果为true,那么就执行后面跟着的这对大括号中的语句,否则就跳过这些语句不执行,而继续下面的其他语句。
有的时候我们希望在条件成立的时候做一件事情,而在条件不成立的时候做另外一件事情。这可以在if语句后面跟上一个else子句,形成一个if-else语句。引用块内容
2.4 做判断
- 判断年纪
import java.util.Scanner;
public class Age {
private static Scanner in;
public static void main(String[] args) {
// TODO Auto-generated method stub
final int MINOR = 35;
System.out.println("请输入你的年纪");
in = new Scanner(System.in);
int age = in.nextInt();
System.out.println("你的年纪是"+age);
if (age < MINOR)
{
System.out.println("年轻是美好的");
}
System.out.println("年龄决定了你的精神世界,请好好珍惜");
}
}
tips:
1, if后忘记了{}永远在if else后面加上大括号,即使后面只有一条语句
2,在if()后面加;
3,错误的使用==和=if只要求()里的值是ture或false
4,在if和else之后必须加上大括号形成语句块大括号内的语句缩进一个tab
5,单一出口是一种好的代码风格。
2.8 多路分支
- switch case
import java.util.Scanner;
public class Switch {
private static Scanner in;
public static void main(String[] args) {
in = new Scanner(System.in);
int type = in.nextInt();
switch(type)
{
case 1:
System.out.println("我是最帅的");
break;
case 2:
System.out.println("你好");
break;
case 3:
System.out.println("1");
break;
case 4:
System.out.println("你2");
break;
default:
System.out.println("你3");
break;
}
}
}
tips:
switch(控制表达式)
{
case 常量:语句
case 常量:语句
……….
default:
}
break;跳出判断。
continue;继续判断
作业
时间换算
题目内容:
UTC是世界协调时,BJT是北京时间,UTC时间相当于BJT减去8。现在,你的程序要读入一个整数,表示BJT的时和分。整数的个位和十位表示分,百位和千位表示小时。如果小时小于10,则没有千位部分;如果小时是0,则没有百位部分;如果分小于10分,需要保留十位上的0。如1124表示11点24分,而905表示9点5分,36表示0点36分,7表示0点7分。
有效的输入范围是0到2359,即你的程序不可能从测试服务器读到0到2359以外的输入数据。
你的程序要输出这个时间对应的UTC时间,输出的格式和输入的相同,即输出一个整数,表示UTC的时和分。整数的个位和十位表示分,百位和千位表示小时。如果小时小于10,则没有千位部分;如果小时是0,则没有百位部分;如果分小于10分,需要保留十位上的0。
提醒:要小心跨日的换算。
输入格式:
一个整数,表示BJT的时和分。整数的个位和十位表示分,百位和千位表示小时。如果小时小于10,则没有千位部分;如果小时是0,则没有百位部分;如果分小于10分,需要保留十位上的0。
输出格式:
一个整数,表示UTC的时和分。整数的个位和十位表示分,百位和千位表示小时。如果小时小于10,则没有千位部分;如果小时是0,则没有百位部分;如果分小于10分,需要保留十位上的0。
输入样例:
903
输出样例:
103
import java.util.Scanner;
public class time {
private static Scanner in;
public static void main(String[] args) {
in = new Scanner(System.in);
int a = in.nextInt();
if(a<800)
{
System.out.println(a+2400-800);
}
else
{
System.out.println(a-800);
}
}
}