如何在java中组合数字?
出于某种原因,当我运行以下代码时,程序打印出“JDN4”或“JDN16”,而我一直希望它打印出“JDN”,后面跟着从0到9的三个数字;例如,“JDN123”或“JDN045”或“JDN206”。代码有什么问题如何在java中组合数字?,java,numbers,Java,Numbers,出于某种原因,当我运行以下代码时,程序打印出“JDN4”或“JDN16”,而我一直希望它打印出“JDN”,后面跟着从0到9的三个数字;例如,“JDN123”或“JDN045”或“JDN206”。代码有什么问题 import java.util.*; public class Document2 { public static void main(String[] args) { String initials = "JDN"; int randomNum
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 + ".");
}
}
您的问题是
随机数
被声明为整数
,因此当您在其他整数上使用+
时,它将对整数求和,而不是将它们串联起来
因此,如果我们使用您的方法,我们需要一个字符串:
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(排除)之间的随机数,因此您可能应该执行。如果您想要一个介于0和9之间的数字,nextInt(10)
。您的问题是Random numbers
被声明为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(排除)之间的随机数,因此如果您想要一个介于0和9之间的数字,您可能应该执行。nextInt(10)
您是在添加数字,而不是连接数字
建议的解决方案:仅使用1个随机数
generator.nextInt(1000);
或者,你可以这样做:
String userName = initials + randomNumer1 + randomNumber2 + randomNumber3;
但我几乎可以肯定,你会得到相同数字的2倍甚至3倍,所以你应该使用第一种方法
您是在添加数字,而不是连接数字
建议的解决方案:仅使用1个随机数
generator.nextInt(1000);
或者,你可以这样做:
String userName = initials + randomNumer1 + randomNumber2 + randomNumber3;
但我几乎可以肯定,你会得到相同数字的2倍甚至3倍,因此你应该使用第一种方法。假设你有三个数字:
int randomNumber1 = 3;
int randomNumber2 = 4;
int randomNumber3 = 5;
int randomNumbers = randomNumber1 + randomNumber2 + randomNumber3;
你希望随机数为345吗?或者你预计是12点
现在试试这个:
String randomNumbers = "" + randomNumber1 + randomNumber2 + randomNumber3;
这次你得到了什么?假设你有三个数字:
int randomNumber1 = 3;
int randomNumber2 = 4;
int randomNumber3 = 5;
int randomNumbers = randomNumber1 + randomNumber2 + randomNumber3;
你希望随机数为345吗?或者你预计是12点
现在试试这个:
String randomNumbers = "" + randomNumber1 + randomNumber2 + randomNumber3;
这次你得到了什么?你在这里添加数字
randomNumbers = randomNumber1 + randomNumber2 + randomNumber3;
如果你想用同样的方法达到你想要的目标,你可以这样做
randomNumbers = randomNumber1 + (randomNumber2 * 10) + (randomNumber3 * 100);
你在这里加数字
randomNumbers = randomNumber1 + randomNumber2 + randomNumber3;
如果你想用同样的方法达到你想要的目标,你可以这样做
randomNumbers = randomNumber1 + (randomNumber2 * 10) + (randomNumber3 * 100);
错误在于+
运算符在int
变量上使用时执行加法,而不是串联
使用
将数字转换为字符串并将其串联。错误在于+
运算符在int
变量上使用时执行加法,而不是串联
使用
将数字转换为字符串并将其连接起来。您添加的是三位数字,最多为27位。您希望连接这些数字的字符串表示形式
也就是说,为什么不简单地生成一个介于0和999之间的随机数呢?您正在添加三位数字,最多可以得到27位。您希望连接这些数字的字符串表示形式
也就是说,为什么不直接生成一个介于0和999之间的随机数呢
String userName=String.format("%s%d%d%d",initials,randomNumber1,randomNumber2,randomNumber3);
试试看
提示:您正在将数字添加为数字。。如果您将它们“添加”到一个空字符串(“”)中,它们将被连接为字符串而不是字符串OK,我不会添加答案,下面给出的所有答案都很好(并且都是相同的)-但是您是否考虑过可能会得到两倍相同的用户名?对我来说,这闻起来像是一个潜在的bug,你应该检查一下单一性!+添加数字和concats字符串。不要将其用于“concat”数字,在这种情况下,您只能得到1或2位数字;)提示:您正在将数字添加为数字。。如果您将它们“添加”到一个空字符串(“”)中,它们将被连接为字符串而不是字符串OK,我不会添加答案,下面给出的所有答案都很好(并且都是相同的)-但是您是否考虑过可能会得到两倍相同的用户名?对我来说,这闻起来像是一个潜在的bug,你应该检查一下单一性!+添加数字和concats字符串。不要将其用于“concat”数字,在这种情况下,您只能得到1或2位数字;)事实上,我想反过来说,既然数字的格式是大端的:randomNumber1*100+randomNumber2*10+randomNumber3
@ChrisJester-Young既然我们谈论的是随机数,为什么endianness很重要?@NullUserExceptionఠ_ఠ: 从实用的角度来看,这并不重要,但它确实使结果显示为与”+随机数1+随机数2+随机数3
(与”+随机数3+随机数2+随机数1
)相同,这可能有助于OP更好地理解此方法。这也有额外的“困难”你必须关心零的前导,事实上,我会反过来说,因为数字的格式是大端的:randomNumber1*100+randomNumber2*10+randomNumber3
@ChrisJester-Young既然我们谈论的是随机数,为什么端数很重要?@NullUserExceptionఠ_ఠ: 从实用的角度来看,这并不重要,但它确实使结果显示为与”+随机数1+随机数2+随机数3
(与”+随机数3+随机数2+随机数1
)相同,这可能有助于OP更好地理解此方法。这也有额外的“困难”您必须关心前导零生成从0到999的随机数可能有点麻烦,因为这意味着数字0-99将有1或2个额外的零添加到stri