获取一个整数范围中大于另一个整教的随机数 public int RandG(int a, int b){ Random r = new Random(). int t = r.nextlnt(b); if (t > a) return t; else{ RandG(a,b); return t; } } 问题 a. 该方法采用的什么算法: b. 请指出代码中存在的问题:
时间: 2024-04-10 18:33:34 浏览: 83
JAVA的Random类的用法详解
a. 这个方法使用了伪随机数生成器(`Random`类)来生成随机数。它使用了`nextInt()`方法来生成一个小于`b`的随机整数。
b. 代码中存在以下问题:
1. 缺少分号:在`Random r = new Random().`这行的末尾缺少分号。
2. 递归调用问题:在`else`语句块中,递归调用了`RandG(a, b)`方法,但是没有将其返回值返回给调用者。这意味着在递归调用时不会返回生成的随机数,导致方法的最终返回值始终是初始生成的随机数`t`。
3. 逻辑错误:即使修复了递归调用的问题,代码中的逻辑也是错误的。如果生成的随机数`t`小于等于`a`,则直接返回`t`,而不是递归调用`RandG(a, b)`。
修复后的代码如下:
```java
public int RandG(int a, int b) {
Random r = new Random();
int t = r.nextInt(b);
if (t > a)
return t;
else
return RandG(a, b);
}
```
在修复后的代码中,我们移除了多余的点号和分号,并修正了递归调用和逻辑错误。现在,如果生成的随机数`t`小于等于`a`,则会继续递归调用`RandG(a, b)`来生成新的随机数,直到生成的随机数大于`a`,然后返回该随机数。
阅读全文