学习-Java顺序结构之无输入求多边形的面积
学习-Java顺序结构之无输入求多边形的面积
- [任务描述]
- 相关知识
- [标识符]
- [变量和常量]
- [声明变量]
- 数据类型
- [int]
- [byte]
- [short]
- [long]
- [float]
- [double]
- [声明常量]
- [算术运算符]
- [[编程要求]
- [测试说明]
1. 任务要求
任务描述
本关任务:计算一个由正方形和等腰三角形组成的多边形的面积,其中正方形边长 4 厘米,等腰三角形底边为正方形的一条边,其到对角顶点的高为 2.6 厘米。 输出格式:该多边形的面积为 xxx
xxx 为多边形的面积。
相关知识
为了完成本关任务,你需要掌握:
- 标识符的命名规则;
- 变量和常量的定义;
- 整型、浮点型变量和常量的定义与使用;
- 算术表达式及其优先级;
- 使用并置符号‘+’合并多个字符串常量。
标识符
在上一个实训中,我们对变量和类名的命名规则已经有了一定的了解,而它们都属于标识符,下面我们来看一下标识符的命名规则吧。
命名规则:
- 标识符必须以字母、下划线 _ 、或美元符 $ 开头(这里的字母并不单单指英文字母,中文也可以,但是我们并不推荐);
- 标识符其它部分可以是字母、下划线 _ 、美元符 $ 和数字的任意组合;
- Java 标识符大小写敏感,且长度无限制;
- 不可以是 Java 的关键字。
另外:表示类名和接口名的标识符用大写字母开始,如:Person,Student 等;表示方法和变量的标识符用小写字母开始,后面的描述性词以大写开始,如:playGames(),studyEnglish() 等等。
接下来我们讲解什么是变量,什么是常量,以及它们在 Java 程序中的使用。
变量和常量
变量和常量,有一个共同的属性:量。量是一种传递数据的介质,量的实质是“值”。而有些量在程序的运行过程中会发生改变,有些量在程序运行过程中值不能发生改变,这些数据在程序中分别被叫做变量和常量。例如,我们在数学中学过的圆的周长:C=2π**r,其中C和r就是其中的变量,而 2 和 π就是其中的常量。
在实际的程序中,可以根据数据在程序运行中是否发生改变,来选择应该是使用变量表示还是常量表示。
现在,大家对变量和常量的概念应该已经有了基本的了解,那变量和常量在 Java 中又是怎么定义的呢?
声明变量
为了方便的引用变量的值,在程序中需要为变量设定一个名称,这就是变量名。Java 语言要求变量在使用以前必须首先声明,在程序中声明变量的语法格式如下:
[修饰符] 数据类型 变量名;
修饰符是可选的,我们在后面的实训中会进行详细的介绍。数据类型和变量名之间使用空格进行间隔(空格的个数不限,但是至少需要一个),声明语句使用“;”作为结束。也可以在声明变量的同时,设定该变量的值,语法格式如下:
数据类型 变量名 = 值;
在程序中,变量的值代表程序的状态,在程序中可以通过变量名来引用变量中存储的值,也可以为变量重新赋值,语法格式如下:
数据类型 变量名1 = 值1;变量名1 = 值2;
当需要声明多个同类型的变量时,我们还可以使用如下格式:
数据类型 变量名1 = 值1,变量名2 = 值2,……变量名n = 值n;
在变量的声明语法中,我们会看到“数据类型”这个名词,它是什么呢,在 Java 又扮演了怎么样的角色呢?
数据类型
Java 语言支持的数据类型分为两种:基本数据类型(Primitive Type)和引用数据类型(Reference Type)。
Java 语言提供的基本数据类型共有八种,包括六种数字类型(四个整数型,两个浮点型),一种字符类型,还有一种布尔型,详细见下表。
数据类型 | 描述 | 占用字节 | 取值范围 | 默认值 |
---|---|---|---|---|
byte | Java中最小的数据类型, | 1个字节 | -128~~127(-27~~27-1) | 0 |
int | 整型,用于存储整数 | 4个字节 | -2147483648~2147483647 | 0 |
short | 短整型 | 2个字节 | -32768~32717 | 0 |
long | 长整型 | 8个字节 | -263~263-1 | 0L |
float | 浮点型,用于存储带小数点的数字 | 4个字节 | / | 0.0f |
double | 双精度浮点型,用于存储带有小数点的数字 | 8个字节 | / | 0.0d |
char | 字符型,用于存储单个字符 | 2个字节 | 0~65535 | 空 |
boolean | 布尔类型,用于判断真或假 | 1个字节 | 仅有两个值,即true、false | false |
注:一个字节等于 8 位(bit)
int
int 数据类型是 32 位、有符号的以二进制补码表示的整数;一般地整型变量默认为 int 类型,具体实例如下:
// 声明一个变量名为 a,数据类型为 int 的变量,并赋予该变量的值为 30000
int a = 30000;
// 声明一个变量名为 b,数据类型为 int 的变量,并赋予该变量的值为 -1200
int b = -1200;
// 输出 a,b 两个变量
System.out.println(a);System.out.print(b);
执行结果如下:
30000-1200
byte
byte 数据类型是 8 位、有符号的,以二进制补码表示的整数;该类型用在大型数组中节约空间,主要代替整数,因为 byte 变量占用的空间只有 int 类型的四分之一,具体实例如下:
// 声明一个变量名为 a,数据类型为 byte 的变量,并赋予该变量的值为 100
byte a = 100;
// 声明一个变量名为 b,数据类型为 byte 的变量,并赋予该变量的值为 -50
byte b = -50;
// 输出 a,b 两个变量
System.out.println(a);
System.out.print(b);
执行结果如下:
100-50
short
short 数据类型是 16 位、有符号的以二进制补码表示的整数;short 数据类型也可以像 byte 那样节省空间。一个 short 变量是 int 型变量所占空间的二分之一,具体实例如下:
// 声明一个变量名为 a,数据类型为 short 的变量,并赋予该变量的值为 1800
short a = 1800;
// 声明一个变量名为 b,数据类型为 short 的变量,并赋予该变量的值为 -600
short b = -600;
// 输出 a,b 两个变量
System.out.println(a);
System.out.print(b);
执行结果如下:
1800-600
long
long 数据类型是 64 位、有符号的以二进制补码表示的整数;这种类型主要使用在需要比较大整数的系统上,具体实例如下:
// 声明一个变量名为 a,数据类型为 long 的变量,并赋予该变量的值为 1800000
long a = 1800000L;
// 声明一个变量名为 b,数据类型为 long 的变量,并赋予该变量的值为 -6000000
long b = -6000000L;
//'L'和'l'均可,但小写容易与数字1混淆,建议大写;也可省略// 输出 a,b 两个变量System.out.println(a);
System.out.print(b);
执行结果如下:
1800000-6000000
这四个数据类型就是 Java 数据类型中的整型,接下来讲解浮点型的数据类型。
float
float 数据类型是单精度、32 位的浮点数;float 在储存大型浮点数组的时候可节省内存空间,具体实例如下:
// 声明一个变量名为 a,数据类型为 float 的变量,并赋予该变量的值为 2.35
float a = 2.35f;
// 定义float类型变量的时候赋值,该值后面必须加上f
// 声明一个变量名为 b,数据类型为 float 的变量,并赋予该变量的值为 -5.894
float b = -5.894f;
// 输出 a,b 两个变量
System.out.println(a);
System.out.print(b);
执行结果如下:
2.35-5.894
double
double 数据类型是双精度、64 位的浮点数;浮点数的默认类型为 double 类型,具体实例如下:
// 声明一个变量名为 a,数据类型为 double 的变量,并赋予该变量的值为 1800.50d 这个d可写可不写。double a = 1800.50d;
// 声明一个变量名为 b,数据类型为 double 的变量,并赋予该变量的值为 -600.47
double b = -600.47;
// 输出 a,b 两个变量
System.out.println(a);
System.out.print(b);
执行结果如下:
1800.5-600.47
注意:这些类型的值在定义的时候不能超过它的范围,如果超过将会报错。
以上就是我们的浮点型和整型的数据类型了,Java 的基本数据类型还有字符型和布尔型,我们在后面的实训中会详细讲解。
我们已经了解了 Java 中的一些数据类型,现在我们继续回到变量这里。
在 Java 中,对于变量我们又有哪些要注意的呢?
- 在 main 方法中不能定义两个同名变量;
- Java 中的每个变量必须先声明,后使用;
- 在一行上可以定义多个变量,但建议只定义一个变量;
- 变量一次只能赋一个值,但可以修改多次。
对于变量,我们这节就讲到这里,接下来我们来看常量。
声明常量
在程序运行过程中一直不会改变的量,称为常量。其在整个程序中只能被赋值一次。
常量在程序中主要有 2 种表现形式:
- 字面常量:代表常数,便于程序的修改(例如:圆周率的值 3.1415926);
- 符号常量:增强程序的可读性(例如:常量 UP、DOWN、LEFT 和 RIGHT 分别代表上下左右,其数值分别是 1、2、3 和 4)。
常量一般分为以下几种:字符串常量、整型常量、浮点常量、字符常量、布尔常量和空常量。字符串常量我们在上一个实训中已经有了了解,本实训主要讲解整型常量和浮点型常量。
-
整数常量,直接写上数字,没有小数点,比如:10,20,30,50 等。
-
浮点常量,直接写上的数字,有小数点。其实可以把浮点常量比作小数,比如 4.5,5.6,7.8 等。
例子:
public class Demo {
public static void main(String[] args) {
System.out.println(12);// 12为整型常量
System.out.print(3.57);// 3.57为浮点型常量
}
}
执行结果:
123.57
在我们的生活中,我们会经常碰到两个数的加,减,乘,除,那么我们在 Java 当中又如何进行计算呢?
算术运算符
算术运算符主要用于进行基本的算术运算,如加法、减法、乘法、除法、赋值等。 Java 中常用的算术运算符:
算术运算符 | 名称 | 举例 |
---|---|---|
+ | 加法 | 5+2=17 |
- | 减法 | 5-2=3 |
* | 乘法 | 5*2=10 |
/ | 除法 | 8/5=1,8.0/5=1.6 |
我们将通过下面的这些例子为大家详细讲解。
public class Demo {
public static void main(String[] args) {
// 定义一个int型的变量a,将其赋值为100
int a = 100;
// 定义一个int型的变量b,将其赋值为84
int b = 84;
// 定义一个 double 型的变量c,将其赋值为25.4
double c = 25.4;
//将变量a与变量b相加,然后输出
System.out.println(a+b);
// 将变量a与变量c相减,然后输出
System.out.println(a-c);
// 将变量a与变量b相乘,然后输出
System.out.println(a*b);
// 将变量a与变量b相除,然后输出
System.out.println(a/b);
// 将变量a与变量c相除,然后输出
System.out.println(a/c);
// 输出a*c-a/b+c的值
System.out.print(a*c-a/b+c);
}
}
执行结果如下:
18474.6840013.9370078740157482564.4
我们发现 a/b 的为 1 ,是因为 / 并不是我们理解上的除法,当两个数都是整型的时候,它实际上是求整,也就是说它算出来的是商,因为两个整型相除,返回结果依然还是整型,它并不会保留小数部分,所以得到的是商。而一个整型和一个浮点型相除时得到的就是一个正常的除法运算值。
通过上面的练习,我们会发现 Java 中的运算顺序跟我们数学中的也是一样的,先算乘除再算加减。那如果我们想要先算加减,再算乘除怎么办呢?我们可以使用圆括号。
// 定义一个int型的变量a,将其赋值为100
int a = 100;
// 定义一个int型的变量b,将其赋值为84
int b = 84;
// 定义一个 double 型的变量c,将其赋值为25.4
double c = 25.0;
System.out.print((a+b)/c);
执行结果:
7.36
所以,最终的优先级是有圆括号的先算圆括号里面的,再算乘除,最后算加减。
注意:这些值在进行运算时不要超过它的范围,如果超出会产生数据溢出。
而赋值运算符又是怎样的呢?
基本的赋值运算符是“=”。他的优先级别低于其他的运算符,所以对该运算符往往最后读取。例如我们定义变量的时候给其赋值。
int a = 10;
复合的赋值运算符,又称为带有运算的赋值运算符,也叫赋值缩写。
运算符 | 名称 | 举例 | 等价于 |
---|---|---|---|
+= | 加赋值 | n+=25 | n=n+25 |
- | 减赋值 | n-=25 | n=n-25 |
* | 乘赋值 | n*=25 | n=n*25 |
/ | 除赋值 | n/=25 | n=n/25 |
例子:
int a = 3;// 把右边的常量值赋值给左边的变量
a += 4;// 把左右两边相加的结果,赋值给左边,相当于 a = a + 4;
System.out.print(a);
执行结果:
7
它首先会进行加法运算 a+4,再将运算结果赋值给变量 a。
整型数据与整型数据进行运算时,谁的数据类型的范围大,数据类型就会变为谁的。浮点数据也是如此。当浮点数据类型与整形进行运算后,其数据类型都会变为该浮点数据类型。关于数据类型的转换,我们将会在后面的实训中详细介绍。
上面我们讲到了变量之间的运算,那如果我想要将两个字符串常量进行拼接又该怎么办呢?
例子:
public class Demo {
public static void main(String[] args) {
// 使用 + 可以将两个字符串常量进行拼接
System.out.println("我喜欢你"+"祖国!");
System.out.print("早上好"+",小明");
}
}
执行结果如下:
我喜欢你祖国!早上好,小明
编程要求
仔细阅读右侧编辑区内给出的代码框架及注释,按照提示编写程序代码。注意最后的输出格式为“该多边形的面积为 xxx”,其中 xxx 为多边形的面积。
测试说明
平台将使用测试集运行你编写的程序代码,若全部的运行结果正确,则通关。 可在右侧“测试结果”区查看具体的测试集详情。
/**
* 任务:计算一个由正方形和等腰三角形组成的多边形的面积,其中正方形边长4厘米,等腰三角形底边为正方形的一条边,其到对角顶点的高为2.6厘米。
* 类名为:PolygonalArea
*/
public class PolygonalArea {
public static void main(String[] args) {
int square_length = 4; // 声明int型变量square_length用于表示正方形边长,并赋值 4
double triangle_h = 2.6; // 声明double型变量triangle_h用于表示三角形底边上的高,并赋值 2.6
// 请在下面的Begin-End之间按照注释中给出的提示编写正确的代码
/********** Begin **********/
// 第1步:计算正方形面积,赋值给变量area_square
// 第2步:计算等腰三角形面积,赋值给变量area_triangle
// 第3步:计算多边形面积,即正方形面积和等腰三角形面积,赋值给变量area_total
// 第4步:打印输出多边形面积,即使用不换行输出语句输出变量area_total的值 输出格式:该多边形的面积为 xxx 其中xxx 为多边形的面积
/********** End **********/
}
}
开始你的任务吧,祝你成功!
2. 任务分析
1. 输入输出分析
输入:无输入
输出:打印输出多边形面积,即使用不换行输出语句输出变量area_total的值 输出格式:该多边形的面积为 xxx 其中xxx 为多边形的面积
2. 需求分析
-
定义变量
-
计算正方形的面积,赋值给变量area_square
-
计算等腰三角形的面积,赋值给变量 area_triangle
-
计算多边形面积 即正方形面积和等腰三角形的面积,赋值给变量area_total
3. 所需知识
无
4. 确认代码框架
- 定义变量
int square_length = 4; // 声明int型变量square_length用于表示正方形边长,并赋值 4
double triangle_h = 2.6; // 声明double型变量triangle_h用于表示三角形底边上的高,并赋值 2.6
-
计算正方形的面积,赋值给变量area_square
public static int areaSquare(int length){ int area_square = length*length; return area_square; }
-
计算等腰三角形的面积,赋值给变量 area_triangle
public static double areaTriangle(int length,double h){ double area_triangle = 0.5*length*h; return area_triangle; }
-
计算多边形面积 即正方形面积和等腰三角形的面积,赋值给变量area_total
public static double areaTotal (int area_square,double area_triangle){ double areaTotal = area_square + area_triangle; return areaTotal; }
5. 书写代码
public class PolygonalArea{
public static void main(String[] args){
int square_length =4;
double triangle_h = 2.6;
int area_square = areaSquare(square_length);//记得参数是啥
double area_triangle = areaTriangle(square_length,triangle_h);
double area_total = area_square + area_triangle;
System.out.print("该多边形的面积为 "+area_total);
}
public static int areaSquare(int length){
int area_square = length * length;
return area_square;
}
public static double areaTriangle(int length,double h){
double area_triangle = 0.5 * length * h;
return area_triangle;
}
public static double areaTotal(int area_square,double area_triangle){
double area_total = area_square + area_triangle;
return area_total;//记得return
}
}
3. 代码
最终代码
public class PolygonalArea{
public static void main(String[] args){
int square_length =4;
double triangle_h = 2.6;
int area_square = areaSquare(square_length);//记得参数是啥
double area_triangle = areaTriangle(square_length,triangle_h);
double area_total = area_square + area_triangle;
System.out.print("该多边形的面积为 "+area_total);
}
public static int areaSquare(int length){
int area_square = length * length;
return area_square;
}
public static double areaTriangle(int length,double h){
double area_triangle = 0.5 * length * h;
return area_triangle;
}
public static double areaTotal(int area_square,double area_triangle){
double area_total = area_square + area_triangle;
return area_total;//记得return
}
}
之前的代码
public class PolygonalArea {
public static void main(String[] args) {
int square_length = 4; // 声明 int 型变量 square_length 用于表示正方形边长,并赋值 4
double triangle_h = 2.6; // 声明 double 型变量 triangle_h 用于表示三角形底边上的高,并赋值 2.6
// 请在下面的Begin-End之间按照注释中给出的提示编写正确的代码
/********** Begin **********/
// 第1步:计算正方形面积,赋值给变量 area_square
int area_square = square_length * square_length;
// 第2步:计算等腰三角形面积,赋值给变量 area_triangle
double area_triangle = 0.5 * square_length * triangle_h;
// 第3步:计算多边形面积,即正方形面积和等腰三角形面积,赋值给变量 area_total
double area_total = area_square + area_triangle;
// 第4步:打印输出多边形面积,即使用不换行输出语句输出变量 area_total 的值,输出格式:该多边形的面积为 xxx,其中 xxx 为多边形的面积
System.out.println("该多边形的面积为 " + area_total);
/********** End **********/
}
}