public class Anli2 { public static void main(String[] args) { // Scanner t = new Scanner(System.in); // int i = t.nextInt(); System.out.println(f(5)); } public static String f(int a) { Random s = new Random(); String cout = ""; for (int i = 0; i < a; i++) { int w = s.nextInt(); if (w>0 && w<= 9){ w = (char) ((char) s.nextInt(75) + 48); cout += w; } } return cout; } }没有打印内容
时间: 2024-02-14 08:18:12 浏览: 55
在你的代码中,你调用了 `System.out.println(f(5))` 来输出一个字符串,但是你的 `f` 方法内部存在问题,导致 `f` 方法返回的字符串为空。具体来说,以下两行代码有问题:
```
if (w>0 && w<= 9){
w = (char) ((char) s.nextInt(75) + 48);
```
第一行中,`w` 变量是用来保存生成的随机数的,但是它的取值范围是 `-2147483648` 到 `2147483647`,并不是 1 到 9。因此,你需要修改这个条件,让它只保留 1 到 9 的随机数。
第二行中,你将 `w` 变量重新赋值为一个字符,这显然是错误的。因为你要生成一个随机的数字字符,应该使用 `48` 到 `57` 之间的随机数,然后将它转换成字符类型。具体来说,你可以使用 `(char) (s.nextInt(10) + 48)` 来生成随机的数字字符。
修正后的代码应该如下所示:
```
public class Anli2 {
public static void main(String[] args) {
System.out.println(f(5));
}
public static String f(int a) {
Random s = new Random();
String cout = "";
for (int i = 0; i < a; i++) {
int w = s.nextInt(9) + 1;
char z = (char) (w + 48);
cout += z;
}
return cout;
}
}
```
这个代码会生成一个长度为 5 的随机数字串,并将其输出到控制台上。
阅读全文