描述
设计一个方法,将一个小于2147483647的double类型变量以截断取整方式转化为int类型
输入描述:
随机double类型变量
输出描述:
转化后的int类型变量
示例1
输入:
12.34复制输出:
12复制
示例2
输入:
1.88输出:
1
A:考察知识点:
Java基础语法:变量、基本数据类型、强制转换。
- 变量:在JVM虚拟机中堆内存存放。
堆(heap),栈(stack) 属于内存空间的一段区域。
- 基本数据类型:整数型(byte 1,short 2,int 4,long 8);浮点型(float 4,double 8);字符型(char 2);布尔型(Boolean 1)
- 强制转换:
说到强制转换,必然有赋值符号的参与,根据参与强制转换的数据不同分为如下2类:
- 常量:首先判断是否在赋值变量的范围内,不在,则强转()。
- 变量:直接判断变量的数据类型是否小于赋值变量范围,不小于,则强转().
- 表达式:数据和运算符的结合,(算术,赋值结合的结果是数值型;条件,逻辑的结果是布尔型),一般运算结果会以运算数据最大精度为依据。
赋值运算符:将右边的(常量/变量/表达式)赋给左边的变量。
简单需求--再优化效率--可读性--结构--设计模式
题解:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
//法一:直接做运算--需求简化
//步骤:
//1.Scanner类对象,调用nextDouble方法,从后台输入double型数据--
//2.将后台输入的值用 double d接收--
//将b强转成int,用int a接收--
//输出打印a
Scanner in = new Scanner(System.in);
double d = in.nextDouble();
int a = (int)d;
System.out.println(a);
//法二:在main外建立方法,调用方法。--优化
//步骤:
//1.Scanner对象,调用nextDouble方法,从后台输入double型数据
//将后台输入的值用 double d接收
//建立方法,用于解决强转boolean成int的问题
//调用方法,输出方法结果
Scanner in = new Scanner(System.in);
double d = in.nextDouble();
System.out.println(typetransfer(d));
}
public static int typetransfer(double d){
int a=(int)d;
return a;
}
}
Q:反思,这两种方法的优缺点各在哪里?
法一:完全遵循我们的算法思路,体现数学和编程的紧密结合。
法二:体现了面向对象编程的封装思想,将需求大的算法封装起来,直接调用方法,我们不需要自己再写。
R:反省:
需求解析非常重要,我们的代码就是需求分析的代码实现。某些变量生存域,某些方法是否有返回值,都是根据我们的需求来变化的。