Java动手动脑02
一、平方数静方法:
public class SquareInt {
public static void main(String[] args) {
int result;
for (int x = 1; x <= 10; x++) {
result = square(x);
// Math库中也提供了求平方数的方法
// result=(int)Math.pow(x,2);
System.out.println("The square of " + x + " is " + result + "\n");
}
}
// 自定义求平方数的静态方法
public static int square(int y) {
return y * y;
}
}
结果:
The square of 1 is 1
The square of 2 is 4
The square of 3 is 9
The square of 4 is 16
The square of 5 is 25
The square of 6 is 36
The square of 7 is 49
The square of 8 is 64
The square of 9 is 81
The square of 10 is 100
二、随机数生成:
Math函数中自带的Math.Random()生成随机数。
还可以自定义随机数生成
代码:
import java.util.*;
public class suiji {
public int suij(int n)
{
int a=16807; //a的值
int m=(int)Math.pow(2, 31)-1; //设置m的值
int x=(a*n)% m; //利用取余数生成随机数
return x;
}
public static void main( String args[] )
{
suiji x=new suiji();
Random a=new Random();
int num=a.nextInt(); //随机生成初始随机数
Scanner input=new Scanner(System.in);
System.out.println("请输入生成随机数的数量:");
int n=input.nextInt(); //输入生成随机数数量
for(int i=1;i<=n;i++)
{
num=x.suij(num);
System.out.print(x.suij(num)+" ");
System.out.println();
}
}
}
结果:
三、Java的可变参数:
max(double ... values) 括号内的参数数量可以变化
…”位于变量类型和变量名之间,前后有无空格均可。调用可变参数方法时,编译器为该可变参数隐含创建一个数组,在方法体中以数组的形式访问可变参数。
请看以下代码,你发现了有什么特殊之处吗?
// MethodOverload.java
// Using overloaded methods
public class MethodOverload {
public static void main(String[] args) {
System.out.println("The square of integer 7 is " + square(7));
System.out.println("\nThe square of double 7.5 is " + square(7.5));
}
public static int square(int x) {
return x * x;
}
public static double square(double y) {
return y * y;
}
}
输出结果:
The square of integer 7 is 49
The square of double 7.5 is 56.25
因为参数类型不同、方法名相同所以方法重载。
Java的“方法重载(overload)”特性。
满足以下条件的两个或多个方法构成“重载”关系:
(1)方法名相同;(2)参数类型不同,参数个数不同,或者是参数类型的顺序不同。方法的返回值不作为方法重载的判断条件。
四、CalculateN示例程序中的BUG:出现负数
由于计算机使用固定的位数来保存数值,因此,能处理的数值大小是有限的,当要处理的数值超过了这一范围时,计算机将会自动截断数值的二进制表示为它所能处理的最多位数,这将导致错误的处理结果。
所以用BigInteger类,支持大整数的加减乘除运算。
public static BigInteger calculateN2(int n) {
if(n==1 || n==0)
{
return BigInteger.valueOf(1);
}
return BigInteger.valueOf(n).multiply(calculateN2((n-1))); }
五、比较两个浮点数:
double i = 0.0001;
double j = 0.00010000000000000001;
System.out.println(i==j); //输出:true
计算机不能精确地表达浮点数(特殊形式的除外),因此,当需要比较两个浮点数是否相等时,应该比较其差的绝对值是否在某个允许范围之内即可。
if ( Math.Abs(i - j) < 1e-10 )
System.out.println("true");
else
System.out.println("false");
最新文章
- 【Android】自定义控件让TextView的drawableLeft与文本一起居中显示
- html 语义化 资料
- php导出数据到excel,防止身份证等数字字符格式变成科学计数的方法
- 使用HelloCharts绘制柱状图
- 关于yaha中文分词(将中文分词后,结合TfidfVectorizer变成向量)
- linux kernel (proc文件系统)参数
- SGU 178.Chain
- django随笔说明
- G - 小晴天老师系列——可恶的墨水瓶
- How To Ask Questions The Smart Way 转
- 测序分析软件-phred的安装
- Jenkins中的一些问题解决(~~不断更新~~)
- python基础(四)字符串处理
- Winform跨窗体操作控件(使用委托)
- 【Django】 gunicorn部署纪要
- scrapy 项目通过scrapyd部署
- java入门简介
- linux poi生成excel demo调试附调用代码
- my big day is coming!
- strace命令学习
热门文章
- Python学习之==>;第三方模块的安装、模块导入
- spring-mvc 3.* 多视图解析配置实例 ContentNegotiatingViewResolver
- SSTap | ProxyCap
- Java ——重写、多态、抽象类
- POJ 1330 Nearest Common Ancestors (dfs+ST在线算法)
- Discrete Mathematics and Its Applications | 1 CHAPTER The Foundations: Logic and Proofs | 1.3 Propositional Equivalences
- 操作Json对象的C#方法
- Python web 面试题(一)
- jenkins shell 取当前时间
- [百家号]APT组织简介2019