出于某种原因,当我运行以下代码时,程序打印出“JDN4”或“JDN16”,我总是希望它打印“JDN”,然后打印三个数字,范围从0到9;例如,“JDN123”或“JDN045”或“JDN206”。代码有什么问题?
import java.util.*;
public class Document2 {
public static void main(String[] args) {
String initials = "JDN";
int randomNumbers;
Random generator = new Random();
int randomNumber1 = generator.nextInt(9);
int randomNumber2 = generator.nextInt(9);
int randomNumber3 = generator.nextInt(9);
randomNumbers = randomNumber1 + randomNumber2 + randomNumber3;
String userName = initials + randomNumbers;
System.out.println("Your username is " + userName + ".");
}
}
答案 0 :(得分:6)
您的问题randomNumbers
被声明为int
,因此当您在其他整数上使用+
时,它会对整数求和而不是将它们连接起来。
所以,如果我们要使用你的方法,我们需要一个字符串:
String userName = initials + randomNumber1 + randomNumber2 + randomNumber3;
但是从0-999生成一个数字并用零填充它会更容易:
int randomNumber = generator.nextInt(1000);
String usernName = initials + String.format("%03d", randomNumber);
还有一点需要注意的是 Random.nextInt(n)
生成0(含)和n
之间的随机数(不包括),所以你可能应该这样做< / em> .nextInt(10)
如果你想要一个0到9之间的数字。
答案 1 :(得分:3)
假设您有三个数字:
int randomNumber1 = 3;
int randomNumber2 = 4;
int randomNumber3 = 5;
int randomNumbers = randomNumber1 + randomNumber2 + randomNumber3;
您希望randomNumbers
为345吗?或者你认为它是12?
现在试试这个:
String randomNumbers = "" + randomNumber1 + randomNumber2 + randomNumber3;
这次你得到什么?
答案 2 :(得分:3)
尝试,
String userName=String.format("%s%d%d%d",initials,randomNumber1,randomNumber2,randomNumber3);
答案 3 :(得分:2)
randomNumbers = randomNumber1 + randomNumber2 + randomNumber3;
你要添加数字,而不是连接它们。
建议的解决方案:只使用1个随机数
generator.nextInt(1000);
或者,你可以这样:
String userName = initials + randomNumer1 + randomNumber2 + randomNumber3;
但我几乎可以肯定你会得到相同数字的2倍甚至3倍,所以你应该使用第一种方法。
答案 4 :(得分:1)
您在这里添加数字。
randomNumbers = randomNumber1 + randomNumber2 + randomNumber3;
如果你想使用同样的方法来实现你想要的目标。
randomNumbers = randomNumber1 + (randomNumber2 * 10) + (randomNumber3 * 100);
答案 5 :(得分:1)
有什么问题,+
运算符在int
变量上使用时会添加,而不是连接。
使用
String randomNumbers = Integer.toString(randomNumber1) + Integer.toString(randomNumber2) + Integer.toString(randomNumber3);
将数字转换为字符串并将它们连接起来。
答案 6 :(得分:0)
您正在添加三个数字,最多只能给您27.您想要连接这些数字的字符串表示。
那就是说,为什么不简单地生成0到999之间的随机数?