第1关:判断闰年
任务描述
本关任务:学习使用 if 语句实现最简单的选择控制结构,并编写一个能判断闰年的程序。
相关知识
为了完成本关任务,你需要掌握:
- boolean 数据类型;
- 关系操作符;
- 逻辑操作符;
- if 语句;
- 什么是闰年。
boolean 类型
boolean 类型是 Java 的基本数据类型之一,其值为true
和false
, 表示逻辑中的“真”和“假”。 我们可以声明 boolean 类型的变量来存储 boolean 值。 示例如下:
boolean x = ture;
System.out.print(x);
输出:
true
关系操作符
在实际应用中,经常会出现数值的比较,因此 Java 提供了关系操作符,同通过关系操作符可以产生 boolean 类型的值。
示例如下:
/** 代码清单 1 */
boolean x = 2>1;
System.out.print(x);
输出:
true
逻辑操作符
boolean 类型的值本身也是可以作为操作数来进行运算的,Java 提供了逻辑运算符,来对 boolean 类型的值进行运算。如下展示了常用逻辑运算符的“真值表”:
示例如下:
/** 代码清单 2 */
boolean x = 2>1;
boolean y = x || false
System.out.print(y);
输出:
true
if 语句
if 语句是通过根据布尔表达式的值来决定是否执行某些语句的控制方法,其基本结构如下:
if (布尔表达式){
语句(组)
}
布尔表达式本身是一个表达式,表达式的值是一个 boolean 类型的值: true
和false
。
1 == 1;// 表达式的值为 true
2 == 1;// 表达式的值为 false
2 != 1;// 表达式的值为 true
示例:
/** 代码清单 3 */
a = true;
if(a){
a = false
}
System.out.print(a)
输出:
false
什么是闰年
年份分为平年和闰年,平年一年有 365 天,而闰年有 366 天。对于年份数能够被 4 整除而又不能被 100 整除,或是能够被 400 整除的,则为闰年。
编程要求
根据提示,在右侧编辑器 Begin-End 区域补充代码,计算并输出年份是否为闰年。具体要求如下:
-
输入一个整型的数字作为年份,例如
2009
代表 2009 年; -
如果输入的年份是闰年,则输出字符串
yes
,末尾不换行; -
如果输入的年份不是闰年,则不做任何输出。
测试说明
平台会对你编写的代码进行测试:
测试输入:
2000
;预期输出:
yes
测试输入:2001
;
预期输出:
no
测试输入:1900
; 预期输出:
no
提示:
-
模运算符
%
可以得到除法的余数,示例如下:a = 101%5
System.out.print(a)
输出:
1
-
输出
yes
后不换行。
代码如下:
package step1;
import java.util.Scanner;
public class LeapYear {
public static void main(String [] args){
Scanner input = new Scanner(System.in);
Integer year = input.nextInt();
//请在指定位置填写代码。
/********* Begin *********/
if(year%4==0&&year%100!=0||year%400==0)
{
System.out.println("yes");
}
else
{
System.out.println("no");
}
/********* End *********/
input.close();
}
}
第2关:求实数绝对值
任务描述
本关任务:尝试使用多条 if 语句实现更选择功能,编程实现求的实数绝对值。
相关知识
为了完成本关任务,你需要掌握:
- 浮点数关系操作符;
- 相反数;
- 绝对值。
浮点数关系操作符
上一关中介绍了多种关系操作符,但都是对整型数值的比较。其实,这些关系操作符对浮点数也同样适用:
/** 代码清单 1 */
double a = 0.3;
double b = 0.4;
if(b>a){
System.out.print("b>a")
}
输出:
b>a
但是,需要注意的是,对浮点数使用关系操作符,可能会有“陷阱”哦。这些“陷阱”正是来自浮点数的精度误差,尤其是使用==
操作符的时候。
/** 代码清单 2 */
System.out.print(0.99999999999999999==1.0);
输出:
true
从代码清单 2
中可以看出,逻辑上本来不相等的两个小数使用==
操作符比较后,得到了true
(意味着相等)的结果。我们在编程的过程中,一定要小心类似的情况。
相反数
相反数是一个数学上的概念,相信你一定对这个概念不陌生。
和为 0 的两个实数数互为相反数,例如 -1 的相反数是 1, 而 1 的相反数是 -1。同样的, -0.5 和 0.5 互为相反数,0 的相反数是 0 。
如何使用 Java 程序来计算相反数呢?很简单,只需用简单用“和为 0”的定义就能简单的计算出相反数了。
/** 代码清单 3 */
double a = 0.01;
double b = 0-a;
System.out.print(b);
输出
-0.01
绝对值
对于一个实数,我们求其绝对值的方法是:
- 首先判断其是否大于 0;
- 如果大于 0 , 则其绝对值就是它自己;
- 如果小于 0 , 则其绝对值是它的相反数;
- 如果等于 0 , 则其绝对值是 0。
编程要求
根据提示,在右侧编辑器 Begin-End 区域补充代码,实现计算实数绝对值的功能。具体要求如下:
-
输入一个
double
类型的浮点数作为输入的实数; -
如果小于零,输出相应的相反数,末尾不换行;
-
如果大于零,输出其本身,末尾不换行;
-
对输入 0 值做特殊处理,如果输入是 0 , 则输出字符串
ops
,末尾不换行 。
测试说明
平台会对你编写的代码进行测试:
测试输入:0.4
;
预期输出:
0.4
测试输入:-0.9
;
预期输出:
0.9
测试输入:0
;
预期输出:
ops
提示: 输出的最后不换行
代码如下:
package step2;
import java.util.Scanner;
public class Abs {
public static void main(String [] args){
Scanner input = new Scanner(System.in);
double x = input.nextDouble();
// 求 x 的绝对值。
/********* Begin *********/
if(x!=0)
{
if(x>0)
{
x=x;
}
else
{
x=-1*x;
}
System.out.println(x);
}
else
System.out.print("ops");
/********* End *********/
input.close();
}
}