java 键盘输入函数

java 键盘输入函数,第1张

 

请楼主参考一下我的代码,祝你学习愉快

 

import javaio;

import javautilScanner; //导入Scanner对象;

public class CompareTwoNumbers{

public static void main(String args[]){

Double number1,number2;

Systemoutprint("请输入第一个数:");

Scanner scanner = new Scanner(Systemin);//实例化一个Scanner对象;

number1 = scannernextDouble();//从键盘输入一个实数赋值给number1;

Systemoutprint("请输入第二个数:");

number2 = scannernextDouble();//从键盘输入一个实数赋值给number1;

if(number1<number2)

Systemoutprintln("较大的数:"+number2);

else if (number1>number2) Systemoutprintln("较大的数:"+number1);

else Systemoutprintln("两个数相同");

}

}

javautil

类 Random

javalangObject

javautilRandom

所有已实现的接口:

Serializable

直接已知子类:

SecureRandom

--------------------------------------------------------------------------------

public class Randomextends Objectimplements Serializable此类的实例用于生成伪随机数流。此类使用 48 位的种子,使用线性同余公式对其进行修改(请参阅 Donald Knuth 的《The Art of Computer Programming, Volume 2》,第 321 节)。

如果用相同的种子创建两个 Random 实例,则对每个实例进行相同的方法调用序列,它们将生成并返回相同的数字序列。为了保证属性的实现,为类 Random 指定了特定的算法。为了 Java 代码的完全可移植性,Java 实现必须让类 Random 使用此处所示的所有算法。但是允许 Random 类的子类使用其他算法,只要其符合所有方法的常规协定即可。

Random 类所实现的算法使用一个 protected 实用工具方法,每次调用它都可提供最多 32 个伪随机生成的位。

很多应用程序会发现 Math 类中的 random 方法更易于使用。

从以下版本开始:

JDK10

另请参见:

Mathrandom(), 序列化表格

--------------------------------------------------------------------------------

构造方法摘要

Random()

创建一个新的随机数生成器

Random(long seed)

使用单个 long 种子创建一个新随机数生成器: public Random(long seed) { setSeed(seed); } next 方法使用它来保存随机数生成器的状态。

方法摘要

protected int next(int bits)

生成下一个伪随机数。

boolean nextBoolean()

返回下一个伪随机数,它是从此随机数生成器的序列中取出的、均匀分布的 boolean 值。

void nextBytes(byte[] bytes)

生成随机字节并将其置于用户提供的字节数组中。

double nextDouble()

返回下一个伪随机数,它是从此随机数生成器的序列中取出的、在 00 和 10之间均匀分布的 double 值。

float nextFloat()

返回下一个伪随机数,它是从此随机数生成器的序列中取出的、在 00 和 10 之间均匀分布的 float 值。

double nextGaussian()

返回下一个伪随机数,它是从此随机数生成器的序列中取出的、呈高斯(“正常地”)分布的 double 值,其平均值是 00,标准偏差是 10。

int nextInt()

返回下一个伪随机数,它是此随机数生成器的序列中均匀分布的 int 值。

int nextInt(int n)

返回一个伪随机数,它是从此随机数生成器的序列中取出的、在 0(包括)和指定值(不包括)之间均匀分布的 int值。

long nextLong()

返回下一个伪随机数,它是从此随机数生成器的序列中取出的、均匀分布的 long 值。

void setSeed(long seed)

使用单个 long 种子设置此随机数生成器的种子。

从类 javalangObject 继承的方法

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

构造方法详细信息

Random

public Random()创建一个新的随机数生成器。此构造方法为随机数生成器的种子设置某个值,该值与此构造方法的所有其他调用所用的值完全不同。

--------------------------------------------------------------------------------

Random

public Random(long seed)使用单个 long 种子创建一个新随机数生成器:

public Random(long seed) { setSeed(seed); }next 方法使用它来保存随机数生成器的状态。

参数:

seed - 初始种子。

另请参见:

setSeed(long)

方法详细信息

setSeed

public void setSeed(long seed)使用单个 long 种子设置此随机数生成器的种子。setSeed 的常规协定是它更改此随机数生成器对象的状态,使其状态好像是刚刚使用参数 seed 作为种子创建它的状态一样。Random 类按如下方式实现 setSeed 方法:

synchronized public void setSeed(long seed) {

thisseed = (seed ^ 0x5DEECE66DL) & ((1L << 48) - 1);

haveNextNextGaussian = false;

}由 Random 类实现的 setSeed 恰好只使用 48 位的给定种子。但是,通常重写方法可能使用 long 参数的所有 64 位作为种子值。 注:尽管种子值是一个基本的 AtomicLong,但仍必须对此方法同步,确保 haveNextNextGaussian 的语义正确。

参数:

seed - 初始种子。

--------------------------------------------------------------------------------

next

protected int next(int bits)生成下一个伪随机数。当此数被所有其他方法使用时,子类应该重写此数。

next 的常规协定是它返回一个 int 值,并且如果参数位处于 1 和 32(包括)之间,那么返回值的多数低位都将(大致)是单独选择的位值,每个位值是 0 或 1 的机会(大致)相等。Random 类按如下方式实现 next 方法:

synchronized protected int next(int bits) {

seed = (seed 0x5DEECE66DL + 0xBL) & ((1L << 48) - 1);

return (int)(seed >>> (48 - bits));

}这是一个线性同余伪随机数生成器,由 D H Lehmer 定义,Donald E Knuth 在《The Art of Computer Programming, Volume 2: Seminumerical Algorithms》的第 321 节中进行了描述。

参数:

bits - 随机位。

返回:

随机数生成器序列的下一个伪随机值。

从以下版本开始:

JDK11

--------------------------------------------------------------------------------

nextBytes

public void nextBytes(byte[] bytes)生成随机字节并将其置于用户提供的字节数组中。所生成的随机字节数等于该字节数组的长度。

参数:

bytes - 放入随机字节的非 null 字节数组。

从以下版本开始:

JDK11

--------------------------------------------------------------------------------

nextInt

public int nextInt()返回下一个伪随机数,它是此随机数生成器的序列中均匀分布的 int 值。nextInt 的常规协定是伪随机地生成并返回一个 int 值。所有 232 个可能 int 值的生成概率(大致)相同。Random 类按如下方式实现 nextInt 方法:

public int nextInt() { return next(32); }

返回:

下一个伪随机数,它是此随机数生成器的序列中均匀分布的 int 值。

--------------------------------------------------------------------------------

nextInt

public int nextInt(int n)返回一个伪随机数,它是从此随机数生成器的序列中取出的、在 0(包括)和指定值(不包括)之间均匀分布的 int值。nextInt 的常规协定是伪随机地生成并返回指定范围中的一个 int 值。所有 n 个可能 int 值的生成概率(大致)相同。Random 类按如下方式实现 nextInt(int n) 方法:

public int nextInt(int n) {

if (n<=0)

throw new IllegalArgumentException("n must be positive");

if ((n & -n) == n) // ie, n is a power of 2

return (int)((n (long)next(31)) >> 31);

int bits, val;

do {

bits = next(31);

val = bits % n;

} while(bits - val + (n-1) < 0);

return val;

}

前面的描述中使用了不明确的词“大致”,只是因为 next 方法大致为一个单独选择位的公正来源。如果它是一个随机选择位的最佳来源,那么给出的算法应该从起始范围开始完全一致地选择 int 值。

但此算法稍微有些复杂。它拒绝那些会导致不均匀分布的值(由于 2^31 无法被 n 整除)。某个值被拒绝的概率取决于 n。最坏的情况是 n=2^30+1,拒绝的概率是 1/2,循环终止前的预计迭代次数是 2。

此算法特别对待 n 是 2 次幂的情况:它从基础的伪随机数生成器中返回正确的高位数。在不是特殊处理的情况中,将返回正确的低 位数。众所周知,线性同余伪随机数生成器(比如此类所实现的)在其低位的值序列中有 short periods。因此,如果 n 是 2 次幂(幂值较小),则这种特殊情况会导致对此方法的后续调用会返回其长度大大增加的值序列。

参数:

n - 所返回随机数的范围。必须为正数。

返回:

一个伪随机数,处于 0(包括)和 n(包括)之间均匀分布的 int 值。

抛出:

IllegalArgumentException - n 不是正数。

从以下版本开始:

12

--------------------------------------------------------------------------------

nextLong

public long nextLong()返回下一个伪随机数,它是从此随机数生成器的序列中取出的、均匀分布的 long 值。nextLong 的常规协定是伪随机地生成并返回一个 long 值。所有 264 个可能 long 值的生成概率(大致)相同。Random 类按如下方式实现 nextLong 方法: public long nextLong() { return ((long)next(32) << 32) + next(32); }

返回:

下一个伪随机数,它是此随机数生成器的序列中均匀分布的 long 值。

--------------------------------------------------------------------------------

nextBoolean

public boolean nextBoolean()返回下一个伪随机数,它是从此随机数生成器的序列中取出的、均匀分布的 boolean 值。nextBoolean 的常规协定是伪随机地生成并返回一个 boolean 值。值 true 和 false 的生成概率(大致)相同。Random 类按如下方式实现 nextBoolean 方法:

public boolean nextBoolean() {return next(1) != 0;}

返回:

下一个伪随机数,它是此随机数生成器的序列中均匀分布的 boolean 值。

从以下版本开始:

12

--------------------------------------------------------------------------------

nextFloat

public float nextFloat()返回下一个伪随机数,它是从此随机数生成器的序列中取出的、在 00 和 10 之间均匀分布的 float 值。

nextFloat 的常规协定是伪随机地生成并返回一个从 00f(包括)到 10f(包括)范围内均匀选择(大致)的 float 值。所有 224 个可能 float 值(其形式为 m x 2-24,其中 m 是一个小于 224 的正整数)的生成概率(大致)相同。Random 类按如下方式实现 nextFloat 方法:

public float nextFloat() {

return next(24) / ((float)(1 << 24));

}前面的描述中使用了不明确的词“大致”,只是因为 next 方法大致为一个单独选择位的公正来源。如果它是一个随机选择位的最佳来源,那么给出的算法应该从起始范围开始完全一致地选择 float 值。

[在 Java 的早期版本中,计算的结果是错误的,因为:

return next(30) / ((float)(1 << 30));这可能看似等效(如果不是更好的话),但实际上由于浮点数舍入中的偏差,它会导致轻微的不均匀性:有效数的低位更可能是 0 而不是 1。]

返回:

下一个伪随机数,它是从此随机数生成器的序列中取出的、在 00 和 10 之间均匀分布的 float 值。

--------------------------------------------------------------------------------

nextDouble

public double nextDouble()返回下一个伪随机数,它是从此随机数生成器的序列中取出的、在 00 和 10之间均匀分布的 double 值。

nextDouble 的常规协定是伪随机地生成并返回一个从 00d(包括)到 10d(包括)范围内均匀选择(大致)的 double 值。所有 253 个可能 float 值(其形式为 m x 2-53,其中 m 是一个小于 253 的正整数)的生成概率(大致)相同。Random 类按如下方式实现 nextDouble 方法:

public double nextDouble() {

return (((long)next(26) << 27) + next(27))

/ (double)(1L << 53);

}前面的描述中使用了不明确的词“大致”,只是因为 next 方法大致为一个单独选择位的公正来源。如果它是一个随机选择位的最佳来源,那么给出的算法应该从起始范围开始完全一致地选择 double 值。

[在 Java 的早期版本中,计算的结果是错误的,因为:

return (((long)next(27) << 27) + next(27))

/ (double)(1L << 54);这可能看似等效(如果不是更好的话),但实际上由于浮点数舍入中的偏差,它会引入较大的不均匀性:有效数的低位可能出现的 0 是 1 的三倍!这种不均匀性在实践中可能没什么关系,但是我们应该争取完美。]

返回:

下一个伪随机数,它是从此随机数生成器的序列中取出的、在 00 和 10 之间均匀分布的 double 值。

--------------------------------------------------------------------------------

nextGaussian

public double nextGaussian()返回下一个伪随机数,它是从此随机数生成器的序列中取出的、呈高斯(“正常地”)分布的 double 值,其平均值是 00,标准偏差是 10。

nextGaussian 的常规协定是伪随机地生成并返回一个 double 值,该值从(大致)从具有平均值 00 和标准偏差 10 的常规标准分布中选择。Random 类按如下方式实现 nextGaussian 方法:

synchronized public double nextGaussian() {

if (haveNextNextGaussian) {

haveNextNextGaussian = false;

return nextNextGaussian;

} else {

double v1, v2, s;

do {

v1 = 2 nextDouble() - 1; // between -10 and 10

v2 = 2 nextDouble() - 1; // between -10 and 10

s = v1 v1 + v2 v2;

} while (s >= 1 || s == 0);

double multiplier = Mathsqrt(-2 Mathlog(s)/s);

nextNextGaussian = v2 multiplier;

haveNextNextGaussian = true;

return v1 multiplier;

}

}这使用了 G E P Box、M E Muller 和 G Marsaglia 的 polar method,该方法在 Donald E Knuth 的《The Art of Computer Programming, Volume 2:Seminumerical Algorithms》的第 341 节,小节 C,算法 P 中进行了描述。注意,对于一次调用 Mathlog 和一次调用 Mathsqrt 而言,它生成了两个单独的值。

返回:

下一个伪随机数,它是从此随机数生成器的序列中取出的、呈高斯(“正常地”)分布的 double 值,其平均值是 00,标准偏差是 10。

这是我从API里直接拷过来的,你可以在网上下载java api,网上有很多资源,有中文版的

1、抽象类

当想要通过共通接口来 *** 作一组classes时,便可撰写abstract class。子类中所有与“抽象类所声明的标记式”相符的函数,都会通过动态绑定的机制来调用。

有一组类他们拥有一系列相似的行为特征,它们拥有一些共同的函数,我们就把这些共同特征抽取出来放到抽象类中,抽象类为所有的子类提供“共同的接口”。

建立抽象类的唯一理由是:

各子型别都可以以以不同方式来表现此一共同接口。达到多态性的目的。

注意点:

抽象函数只能在抽象类中出现(即,一个普通的类中,不能声明抽象函数,一旦声明,要将该class用abstract做饰词,否则编译出错)

抽象类不能被实例化。否则编译出错。

只有当子类实现了抽象类中定义的所有函数,该子类才可被实例化。否则,该子类便也是个抽象类。

也可以将一般的类(不含任何抽象函数的类)声明为abstract。表明不允许该类产生任何实例。

2、接口

完全抽象的class,不带半点实现内容。interface相当于是在类之间建立起的一个协议。

interface使得我们可以撰写出“可被向上转型为多个基本型别”的class,达到C++多重继承的变形。

注意点:

默认interface是friendly,可通过加上关键字public成为public。

interface中定义的函数默认是public的,因为它提供共同接口,需要可以被外界访问。为了增强程序可读性,可显式声明为public。

当实现某个interface,用关键字implement。

实现类中袭承自interface的函数必须都要定义为public。一定要显式写明是public,默认就变成friendly,减低了访问权限,这在Java编译器中是不允许的。

3、区别和联系

异:

抽象类用于支持多态性,接口用来支持“多继承”变形—— 一个class可向上转型为多个基本型别。

抽象类中函数既可是抽象的,也可是包含实现细节的。接口只能表示形式,其中函数必定都是抽象的。

抽象函数中可定义变量。接口只能定义 static/final 的成员变量。

同:

- 抽象类和接口都不能被实例化。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/12176282.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存