第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用 Math.random() 和 ThreadLocalRandom.current()

使用 Math.random() 和 ThreadLocalRandom.current()

ibeautiful 2023-06-21 13:31:25
Java 中的 BankApplication 程序,setDebitCard()功能問題。在這里,我無法在每次java 運行變量后生成唯一的隨機(jī)數(shù)debitCardNumber,而它與debitCardPin.nextDouble(),Math.random()我也嘗試使用 Random class method ThreadLocalRandom.current().nextDouble()..問題:debitCardNumber嘗試上述所有操作后,輸出是相同的。(沒有任何語法錯誤)另外,我得到的是相同的 10 位數(shù)字,debitCardNumber而不是 12 位數(shù)字。debitCardPin工作正常,但有時它會給我一個唯一的 3 位隨機(jī)數(shù)。代碼package bankAccountApp;import java.util.Random;import java.util.concurrent.ThreadLocalRandom;public class Current extends Account {    private int debitCardNumber;    private int debitCardPin;    Random rand = new Random();//setDebitCard() codeprivate void setDebitCard(){    debitCardNumber = (int)(ThreadLocalRandom.current().nextDouble()*Math.pow(10,12));/* Also tried using   debitCardNumber = (int)(rand.nextDouble()*Math.pow(10,12));   debitCardNumber = (int)(Math.random()*Math.pow(10,12));*/    debitCardPin = (int)(Math.random()*Math.pow(10,4));    }預(yù)期結(jié)果:debitCardNumber每次JAVA RUN后應(yīng)返回一個唯一的隨機(jī) 12 位整數(shù)debitCardPin應(yīng)該只返回 4 位整數(shù)。實際結(jié)果:debitCardNumber每次JAVA RUN后返回相同的 10 位整數(shù)debitCardPin有時返回一個 3 位唯一隨機(jī)整數(shù)。
查看完整描述

2 回答

?
Qyouu

TA貢獻(xiàn)1786條經(jīng)驗 獲得超11個贊

問題在于,當(dāng)您向下轉(zhuǎn)換為 an 時, an可以容納的int最大值是 10 位數(shù)字,因此它無法返回大于該數(shù)字的數(shù)字。int2147483647


所以你需要讓這個領(lǐng)域成為debitCardNumber一個long:


private long debitCardNumber;

將代碼更改為此以獲取 12 位數(shù)字:


long min = (long)Math.pow(10, 11);

long max = (long)Math.pow(10, 12);

long debitCardNumber = ThreadLocalRandom.current().nextLong(min,  max);

對于 4 位數(shù)字debitCardPin:


int debitCardPin = ThreadLocalRandom.current().nextInt(1000, 10000);

不需要將數(shù)字轉(zhuǎn)換為long或int顯式地存在一些方法,這些方法將在給定和值的情況下ThreadLocalRandom.current()給出相應(yīng)類型的數(shù)字。使用此方法,您可以放心,您始終會得到介于(包含)和(不包含)之間的值。這將解決您的問題“但有時它會給我一個唯一的 3 位數(shù)隨機(jī)數(shù)。”minmaxminmax


查看完整回答
反對 回復(fù) 2023-06-21
?
心有法竹

TA貢獻(xiàn)1866條經(jīng)驗 獲得超5個贊

問題是 int。它太小了(你這里有溢出)。


您可以嘗試以下代碼:


double rndValue = (ThreadLocalRandom.current().nextDouble() * Math.pow(10, 12));

DecimalFormat formatter = new DecimalFormat("##");

formatter.setRoundingMode(RoundingMode.DOWN);

String result = formatter.format(rndValue);

System.out.println(result);


查看完整回答
反對 回復(fù) 2023-06-21
  • 2 回答
  • 0 關(guān)注
  • 156 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號