gjy499 2023-08-01 09:15 采纳率: 78.6%
浏览 4
已结题

java的getRandomDouble()运用 请提供完整代码

  1. getRandomDouble()可以取得0-1之間的一個亂數,為double值,將其放大10倍以取得0-10之間的整數,但可能會丟出Exception。 題目:總共需取得10組整數。 限制:
    1. 每一組,呼叫getRandomDouble()取得數字如果發生Exception,則要重新取,最多只能試3次。也就是如果連續取3次都發生Exception,則印出「無法取得」。
    2. catch exception的block中,不能再寫try catch,例如
catch(IllegalStateException ex){
   try {} catch....
}

最後將取得的結果以及呼叫次數列印出來

例如:
 第1次取得 3 呼叫2次
 第2次取得 無法取得
 第3次取得 4 呼叫1次
 ..
 第10次取得 5 呼叫3次

//do not change
public static double getRandomDouble() throws IllegalStateException{
        double nextValue = ThreadLocalRandom.current().nextDouble();
        if ( (int)(nextValue*10) %2 == 1 ){
            throw new IllegalStateException("Something wrong, please try again!");
        }
        return nextValue;
}



  • 写回答

2条回答 默认 最新

  • CSDN专家-sinJack 2023-08-01 09:50
    关注
    import java.util.concurrent.ThreadLocalRandom;
    public class RandomTest {
        public static int callCount = 0;
        public static void main(String[] args) {
            for (int i = 1; i <= 10; i++) {
                int result = getRandomInteger();
                System.out.println("第" + i + "次取得 " + (result != -1 ? result + " 呼叫" + callCount + "次" : "无法取得"));
            }
        }
    
        public static int getRandomInteger() {
            callCount = 1;
            int result = -1;
    
            while (callCount <= 3) {
                try {
                    double randomDouble = getRandomDouble();
                    result = (int) (randomDouble * 10);
                    break;
                } catch (IllegalStateException e) {
                    callCount++;
                }
            }
    
            return result;
        }
    
        public static double getRandomDouble() throws IllegalStateException {
            double nextValue = ThreadLocalRandom.current().nextDouble();
            if ((int) (nextValue * 10) % 2 == 1) {
                throw new IllegalStateException("Something wrong, please try again!");
            }
            return nextValue;
        }
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 8月9日
  • 已采纳回答 8月1日
  • 创建了问题 8月1日

悬赏问题

  • ¥20 如何在cst中建立这种螺旋扇叶结构
  • ¥20 根据动态演化博弈支付矩阵完成复制动态方程求解和演化相图分析等
  • ¥15 Prism框架ItemControl元素绑定ViewModel中的命令失败
  • ¥20 关于DAC输出1.000V对分辨率和精度的要求
  • ¥20 想写一个文件管理器,加载全部子文件夹后,要一级一级返回
  • ¥15 华为超融合部署环境下RedHat虚拟机分区扩容问题
  • ¥15 哪位能做百度地图导航触点播报?
  • ¥15 请问GPT语言模型怎么训练?
  • ¥15 已知平面坐标系(非直角坐标系)内三个点的坐标,反求两坐标轴的夹角
  • ¥15 webots有问题,无响应