第1关:三个数的平均值
任务描述
本关任务:编写一个 IPO 流程的程序,输入三个数,输出平均值。
相关知识
完成本关任务,你需要学习以下知识:
- 什么是 IPO;
- 从控制台读取输入;
- 标识符与变量;
- 变量及相关操作。
什么是 IPO
IPO 指程序执行的三个流程,分别是输入(Input)、执行(Precess)以及输出(Output)。
IPO 流程将在本课程中非常常见,编写的代码也可以根据 IPO 简单的分成三个部分。
从控制台读取输入
为了使程序具有与外界交互的能力, Java 提供了从控制台读取输入这样一种途径。可以使用Scanner
类从控制台输入,此外,Java 使用System.in
来抽象标准输入设备。
输入示例如下:
/** 代码清单 1 */
// 创建从控制台标准输入的对象
Scanner input = new Scanner(System.in);
// 从控制台读取一个小数
double d = input.nextDouble();
// 从控制台读取一个整数
int i = input.nextInt();
// 从控制台读取一行字符串
String s = input.nextLine();
标识符与变量
在 代码清单 1 中,每条输入语句的前面都有类似double d =
这样的符号,这是为了使用变量存储输入的数据,其中double
是变量类型,d
是变量名(或标识符)。
标识符是为了标识程序中诸如类、方法和变量的元素而采用的命名。
注:变量、方法、类的概念相对复杂,将在后续章节详细介绍,这里只会简单介绍变量及标识符。
标识符就相当于我们在编程时给 Java 程序中定义的各种元素的名称,就像发明家给自己各式各样的发明取名字一样。Java 规定了标识符命名需要遵守一些规则:
-
标识符是由数字、字母、下划线(
_
)和美元符号($
)组成的字符序列; -
标识符不能以数字开头,例如
1number
作为标识符是不合法的; -
标识符不能是保留字,保留字是指 Java 语言所用到的特定符号,例如变量类型
double
,就不能用作编程人员自定义的标识符; -
标识符可以为任意长度。
值得注意的是,Java 标识符是大小写敏感的,例如:Apple
和apple
是两个不同的标识符。
合理的使用标识符,能够使我们编写的程序更加美观、更加易懂,因此请养成良好的标识符命名习惯。
最后,下表列举了一些常见保留字,在命名标识符时需要尽量避开: | 类型 | 标识符示例 | | ------------ | ------------ | | 类型名 | double、float、int、char、String 等 | | 修饰符 | static、public、private 等 | | 操作符 | new、break、continue 等 | | 语句 | if、else、switch、catch、throw 等 | | 类声明符 | class |
变量及相关操作
前面说完了标识符,再简单介绍一下变量,因为标识符一个主要的作用是给变量命名。通俗来说,变量就是一个存储容器,容器中存放的“东西”可以进行改变。我们编写程序,就是为了按照一定的规则使用并改变容器中存储的“东西”,最终得到我们想要的“东西”。
我们改变变量中存储东西时需要使用赋值操作。
示例如下:
/** 代码清单 2*/
// 声明了一个 double 类型的变量,变量名为 number
double number;
// 对 number 进行赋值,改变其存储的内容
number = 1.0; // 此时 number 存储着数字 1.0
// 再次对 number 进行赋值,改变其存储的内容
number = 2.0 // 此时 number 存储着数字 2.0
在 代码清单 2 中,通过赋值操作=
可以不断的改变变量的值,需要注意的是,赋值的符号=
并不是数学意义上的“相等”,在 Java 中,“相等”的概念由符号==
来体现。
此外,Java 还提供了一些操作符来操作变量中存储的东西。 示例如下:
/** 代码清单 3 */
// 声明两个 double 类型的变量
double a, b;
// 对变量 a, b 进行赋值
a = 1.0;
b = 2.0;
// 对变量 a, b 进行加法操作,并将操作结果赋值
double c = a+b; // 此时变量 c 中存储着加法的结果
// 对变量 c 进行出发操作,并重新赋值
c = c/3.0;
// 最终,变量 c 中存储的值为 1.0
在 代码清单 3 中,使用了+
以及/
操作符,分别进行了加法和除法操作,虽然这两种操作仅仅是 Java 提供的操作中的就牛一毛,但也代表了 Java 程序执行的一般过程,即:操作变量的值,并将结果赋值。
注意:以上语句需要在主方法中进行编写。
编程要求
根据提示,在右侧编辑器 Begin-End 区域补充代码,实现求三个数的平均值的功能。具体要求如下:
- 依次输入三个
double
类型的浮点数分别存入变量a,b,c
中; - 然后计算三个数的平均值,存入变量
result
中。
测试说明
平台会对你编写的代码进行测试:
测试输入:
1.0
2.0
3.0
预期输出:
2.0
代码如下
package step1;
import java.util.Scanner;
public class Main
{
public static void main(String[] args)
{
Scanner input = new Scanner(System.in);
double a,b,c;
double result = 0.0;
//请在指定位置填写代码。
/********* Begin *********/
a = input.nextDouble();
b = input.nextDouble();
c = input.nextDouble();
result=(a+b+c)/3;
/********* End *********/
input.close();
System.out.print(String.format("%.1f", result));
}
}
第2关:摄氏度转华氏度
任务描述
本关任务:掌握标准输出以及小数的简单格式化输出,编写程序输入摄氏度数,输出相应的华氏度。
相关知识
为了完成本关任务,你需要掌握:
- 从控制台输出;
- print 和 println;
- 格式化输出之控制小数点;
- 摄氏度与华氏度。
从控制台输出
在上一关中,讲解了如何从控制台输入,从而实现 Java 程序与外界的交互。而除了从外界获取信息, Java 程序有时还需要将信息展示给外界,例如一些提示信息、计算的结果、出现的错误等等,这就用到了 Java 的标准输出。 示例如下:
/** 代码清单 1 */
// 输出字符串
System.out.print("Welcome to Java");
double a = 1.0;
// 输出浮点数
System.out.print(a);
// 输出一行字符串
System.out.println("Welcome to Java");
// 输出一行浮点数
System.out.println(a);
在控制台的输出结果:
Welcome to Java1.0Welcome to Java
1.0
代码清单 1 展示了简单的控制台输出信息,包括输出浮点数以及输出字符串,虽然输出结果杂乱无章,而且输出浮点数的格式也不明确,但至少我们知道了如何编写语句进行输出。
print 和 println
我们可以看到代码清单 1
杂乱无章的信息输出,这是因为print
和println
使用上的区别。与System.in
相对应, Java 提供了标准输出的抽象,就是System.out
。在 代码清单 1 中,我们使用了System.out
的两种输出语句,分别是System.out.print()
和System.out.println()
。
它们的区别是:print()
输出完毕后不换行,而println()
输出完毕后会换行,因此println()
不输出任何东西时,就输出一个换行符。因此,对代码清单进行简单的修改,对比两次输出结果,你就会明白两个方法的区别。
示例如下:
/** 代码清单 2 */
// 输出字符串
System.out.print("Welcome to Java");
// 换行输出
System.out.println();
double a = 1.0;
// 输出浮点数
System.out.print(a);
// 换行
System.out.println();
// 输出一行字符串
System.out.println("Welcome to Java");
// 输出一行浮点数
System.out.println(a);
在控制台的输出结果:
Welcome to Java
1.0
Welcome to Java
1.0
请一定要注意print
和println
的区别,本实践课程所提供的实训在进行评测时,会采用精确匹配,有时侯评测未通过,很有可能就是输出的结尾是否多了一个换行。
格式化输出之控制小数点
在 代码清单 1 中,我们输出了一个浮点数,可以看到输出结果保留到小数点后一位,即1.0
。那么看以下代码:
/** 代码清单 3 */
double a = 1.00;
System.out.print(a);
输出结果:
1.0
当想要输出1.00
这样的信息时,Java 依然固执的输出1.0
这样的形式,要解决这样的问题。就要用到格式化输出。
示例如下:
/** 代码清单 4 */
double a = 1.00;
System.out.println(String.format("%.3f",a));
System.out.println(String.format("%.4f",a));
输出结果:
1.000
1.0000
代码清单 4
提供了一个使用格式化输出控制输出浮点数小数点的例子,其中%.3f
和%.4f
代表了小数点后保留 3 位、4 位。格式化输出本身涉及的内容很多,这里不做展开,通过后续课程学习,你将逐步进行掌握,直至灵活运用。
注意,本实训课程的评测对小数点也有精准要求,当要求输出
1.00
, 而实际输出1.0
时,意味着无法通过评测。所以,请使用格式化输出,按要求保留输出小数的位数。
摄氏度与华氏度
摄氏度和华氏度是温度的两种不同计量方式,它们之间可以相互转化:
华氏度=(9/5)∗摄氏度+32
提示:在进行除法时,9/5
和 9/5.0
是有区别的, 示例如下:
/** 代码清单 5 */
// 整数除
System.out.println(9/5);
System.out.println(9/5.0);
输出:
1
1.8
这是因为 Java 中的除法操作/
对小数和整数是不同的,5
是整型(int
), 5.0
是浮点型(double
)。
编程要求
根据提示,在右侧编辑器 Begin-End 区域 补充代码,实现摄氏度转华氏度的功能。具体要求如下:
- 输入一个
double
类型的值存入变量C
中,表示摄氏度的值; - 将摄氏度转化为华氏度存入变量
F
后输出,结果保留两位小数。末尾无换行。
测试说明
平台会对你编写的代码进行测试:
测试输入:
0
;预期输出:
32.00
代码如下
package step2;
import java.util.Scanner;
public class Main
{
public static void main(String[] args)
{
Scanner input = new Scanner(System.in);
double C = input.nextDouble();
input.close();
double F;
//请在指定位置填写代码。
/********* Begin *********/
double a;
a=9/5.00;
// System.out.println(a);
F=a*C+32;
System.out.print(String.format("%.2f", F));
/********* End *********/
}
}